Ich habe ein Array wie A = [1,2,3]
und ein anderes Array B = [4,5,6]
. Nun muss ich ein weiteres Array C so, dass die Elemente in C in der Größenordnung des Elements A. Wie die gleichen Elemente von B mit Auftreten sein sollte, C = [4, 5, 5, 6, 6, 6]
Wie bekomme ich eine bestimmte Anzahl von Zeiten in einem Array Python
Antwort
A = [1,2,3]
B = [4,5,6]
C = [b_item for a_item, b_item in zip(A,B) for _ in range(a_item)]
print C
Ergebnis:
[4, 5, 5, 6, 6, 6]
Diese ist eine einzeilige entspricht:
C = []
for a_item, b_item in zip(A,B):
for _ in range(a_item):
C.append(b_item)
... was in etwa gleichwertig
istC = []
for i in range(min(len(A), len(B))):
a_item = A[i]
b_item = B[i]
for _ in range(a_item):
C.append(b_item)
(N.B. Stolpern Sie nicht über den Unterstrich. It's an ordinary variable. Es wird üblicherweise verwendet, wenn Sie tatsächlich nicht auf den Wert der Variablen, wie in diesem Beispiel beziehen müssen)
Meine Lösung:
C = sum([[B[i]]*A[i] for i in range(len(A))], [])
print C
Explaination:
[B[i]]*A[i]
eine Liste erstellen mit A[i]
Artikel von B[i]
[B[i]]*A[i] for i in range(len(A))]
finden Sie eine Liste von Listen, zB [[4], [5, 5], [6, 6, 6]]
sum(C, [])
werden Liste der Listen in Liste konvertieren
Ja, das funktioniert. 'sum (sequence, [])' ist ein wenig ineffizient, weil es mehrere Zwischenlisten erstellen muss, aber das ist keine große Sache, wenn C relativ klein ist. – Kevin
ich einen anderen Weg, es zu tun, mit einer anderen Idee liefern wird (nicht behaupten, er diese nutzen sollte, aber aus didaktischen Gründen)
finde ich recht ordentlich zu sein mit der Lage Elemente in python zu replizieren
[0]*3 # it means we create 3 elements of zero: [0,0,0]
wenn ich diese einfach tun:
[[x]*i for i,x in zip(A, B)]
ich Gruppen von Elementen:
[[4], [5, 5], [6, 6, 6]]
Dann könnten wir itertools.chain, um wieder zu einer einzigen Liste verwenden:
from itertools import chain
list(chain(*[[x]*i for i,x in zip(A, B)]))
[4, 5, 5, 6, 6, 6]
Hier ist eine andere Lösung numpy mit:
import numpy
a = numpy.array = [1,2,3]
b = numpy.array = [4,5,6]
c = numpy.repeat(b,a)
Ergebnis:
array([4, 5, 5, 6, 6, 6])
Hier Weitere Informationen über numpy.repeat mit: http://docs.scipy.org/doc/numpy/reference/generated/numpy.repeat.html
Einen anderen Weg:
C = []
for a, b in zip(A, B):
C.extend([b] * a)
Aber ich die Liste Verständnis bevorzugen würde, nur ohne die lästigen _item
, das heißt,
C = [b for a, b in zip(A, B) for _ in range(a)]
oder die kürzere (aber für große Fälle langsam) Summe:
C = sum(([b] * a for a, b in zip(A, B)), [])
- 1. Wie bekomme ich Indizes um bestimmte Werte in einem Array
- 2. Wie bekomme ich die Anzahl der Stunden zwischen zwei Zeiten?
- 3. Wie bekomme ich nur eine bestimmte Anzahl von Wörtern aus einem String in PHP?
- 4. Plotten bestimmte Anzahl von Tagen von einem csv in Python
- 5. Wie behalte ich eine bestimmte Anzahl von Elementen in einem Array?
- 6. Entpacken Sie eine bestimmte Anzahl von Elementen in Python?
- 7. Wie kann ich eine bestimmte Anzahl von Elementen aus einem Array entfernen?
- 8. Geben Sie eine bestimmte Anzahl von Zeichenfolgen in Python zurück.
- 9. Pandas, python - wie bestimmte Zeiten in Zeitreihen wählen
- 10. Google Tabellen/Excel-Array-Formel zum Erstellen von Listen von Wörtern, die eine bestimmte Anzahl von Zeiten erscheinen
- 11. Ich brauche eine beliebige Anzahl + eine bestimmte Anzahl in Java
- 12. Python - Wie bekomme ich eine Liste von einem Cluster-Diagramm?
- 13. Drucken Sie eine Zeichenkette aus einem 2D-Array in eine bestimmte Anzahl von Zeilen
- 14. Wie die Anzahl der Zeiten erhalten eine Zeichenfolge in PHP
- 15. Twig - Wie eine bestimmte Anzahl von Wiederholungen
- 16. Wie bekomme ich Ctypes-Objekt von einem Ctypes-Array
- 17. Wie bekomme ich bestimmte Menüpunkte von Joomla?
- 18. Wie bekomme ich die maximale Anzahl von einem Array in JavaScript?
- 19. An eine bestimmte Eigenschaft von Objekten in einem Array binden
- 20. Wie gruppiere ich eine bestimmte Anzahl von Elementen mit jQuery?
- 21. Wie kann ich zählen, wenn eine bestimmte Gruppe von Ziffern in einem Array vorhanden ist?
- 22. Wie kombiniere ich eine zufällige Anzahl von Listen in Python
- 23. Wie bekomme ich bestimmte Wurzeln von XML?
- 24. Wie bekomme ich bestimmte Daten von jsonarray?
- 25. Wie wähle ich eine bestimmte Zeit für eine Liste von Zeiten?
- 26. Wie bekomme ich einen bestimmten Wert von einem Array von Objekten in Python
- 27. Wie bekomme ich die Anzahl der Wochen in einem Monat
- 28. Android JSON-Array: Wie bekomme ich und bestimmte Zeichenfolge?
- 29. Wie bekomme ich einen Wert von einem Generator in Python?
- 30. Wie bekomme ich einen xpathContext von einem xmlNode in Python
Könnten Sie dies für die erklären .. weniger pythonic geneigt Leute wie mich? Ich dachte 2 für Schleifen lol –
@SterlingArcher, sicher. In gewisser Weise benutze ich _am_ zwei For-Schleifen. Ich habe sie beide in einen Ausdruck gezwängt. – Kevin
Danke. Aber wie Sterling Archer sagte ... gibt es dafür eine einfache Logik? Obwohl das funktioniert. – sparrow