Heim  >  Artikel  >  Backend-Entwicklung  >  Wie komprimiere ich Listen unterschiedlicher Größe mit „itertools.cycle“ in Python?

Wie komprimiere ich Listen unterschiedlicher Größe mit „itertools.cycle“ in Python?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 13:12:30685Durchsuche

How to Zip Differently Sized Lists Using `itertools.cycle` in Python?

Verschieden große Listen mit integrierten Funktionen komprimieren

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 itertools erstellt einen 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:

<code class="python">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)</code>

In diesem Beispiel:

  • if len(A) > len(B) prüft, ob die erste Liste (A) länger als die zweite (B) ist.
  • Wenn ja, verwendet es zip, um A mit einem zyklischen Iterator von B zusammenzuführen, wodurch B effektiv im gesamten zusammengeführten Ergebnis wiederholt wird .
  • Wenn B länger ist, wird die Reihenfolge umgekehrt und stattdessen A durchlaufen.

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 es wiederholt zurück Elemente. 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.

Das obige ist der detaillierte Inhalt vonWie komprimiere ich Listen unterschiedlicher Größe mit „itertools.cycle“ in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn