Erweitern der zip()-Funktionalität: Auffüllen auf längste Länge
Pythons integrierte zip()-Funktion koppelt Elemente aus mehreren Iterables, aber es kürzt das Ergebnis auf die Länge der kürzesten Iteration. Wenn Sie eine umfassendere Zip-Datei benötigen, die mit None-Werten aufgefüllt wird, um sie an die längste Eingabe anzupassen, ziehen Sie die folgenden Lösungen in Betracht:
Python 3: itertools.zip_longest
In Python 3. itertools stellt die Funktion zip_longest() bereit. Die Ergebnisliste wird so erweitert, dass sie der Länge der längsten Eingabe entspricht.
import itertools a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] list(itertools.zip_longest(a, b, c)) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Sie können einen benutzerdefinierten Füllwert mithilfe des Parameters fillvalue angeben:
list(itertools.zip_longest(a, b, c, fillvalue='foo')) # [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Python 2: itertools.izip_longest oder map Keine
In Python 2 können Sie verwenden itertools.izip_longest (eingeführt in Python 2.6) oder verwenden Sie Map mit None.
from itertools import izip_longest a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] list(izip_longest(a, b, c)) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)] map(None, a, b, c) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Das obige ist der detaillierte Inhalt vonWie kann ich die zip()-Funktion von Python erweitern, um Iterables ungleicher Länge zu verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!