Zippen unterschiedlich großer Listen mithilfe integrierter Funktionen
Während die integrierte Zip-Funktion beim Zusammenführen zweier Listen nicht in der Lage ist, die kürzere Liste zu wiederholen Bei unterschiedlich großen Listen können Sie die Funktion itertools.cycle nutzen, um dieses Ergebnis zu erzielen.
cycle aus dem Python-Paket, das itertools erstellt ein Iterator, der wiederholt Elemente aus einem Iterable zurückgibt, auch nach dessen Erschöpfung. Durch die Kombination von „zip“ und „cycle“ ist es möglich, Größenunterschiede zwischen den Listen auszugleichen und sicherzustellen, dass die längere Liste bei Bedarf wiederholt wird.
Beispiel:
A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]
# Use itertools.cycle to repeat the shorter list
from itertools import cycle
zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)
In diesem Beispiel:
Ergebnis:
zip_list enthält die folgenden Tupel als Generatorobjekt:
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
So funktioniert es:
itertools.cycle erstellt eine Kopie des Iterables (in diesem Fall B) und gibt seine Elemente wiederholt zurück. Während zip durch A iteriert, paart es jedes Element mit dem nächsten verfügbaren Element aus dem zyklischen Iterator.
Wenn A kürzer als B ist, beginnt der Prozess von vorne am Anfang von B, sobald sein Iterator erschöpft ist. Wenn A hingegen länger ist, wechselt der B-Iterator kontinuierlich, um den Rest der zusammengeführten Liste zu füllen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3