In Python kombiniert die zip()-Funktion Elemente aus mehreren Iterables in ein einzelnes Iterable von Tupeln. Bei Verwendung mit der Syntax zip([iter(s)]n) bietet es eine praktische Möglichkeit, eine Liste in gleich große Teile aufzuteilen.
So funktioniert es:
Der Ausdruck [iter(s)]n erstellt eine Liste mit n Kopien des Iterators over die Liste s. Jede Kopie des Iterators beginnt am Anfang der Liste. Die *args entpacken die Liste in Argumente für zip(), was dazu führt, dass n Iterables an die Funktion übergeben werden.
Ausführliches Äquivalent:
Um die Funktionalität von zip wiederherzustellen ([iter(s)]n) mit ausführlich Code:
def verbose_chunk(s, n): """Returns a list of chunks of equal size from a list.""" chunks = [] for i in range(n): chunk = [] for j in range(len(s) // n): chunk.append(next(iter(s))) chunks.append(tuple(chunk)) return chunks
Dieser Code iteriert zunächst über die gewünschte Anzahl von Blöcken. Für jeden Block wird eine verschachtelte Schleife verwendet, um die Elemente in der Liste zu durchlaufen und sie dem Block hinzuzufügen. Der Chunk wird dann in ein Tupel umgewandelt und zur Liste der Chunks hinzugefügt.
Beispiel:
s = [1,2,3,4,5,6,7,8,9] n = 3 print(list(zip(*[iter(s)]*n))) # [(1,2,3),(4,5,6),(7,8,9)] print(verbose_chunk(s, n)) # [(1,2,3),(4,5,6),(7,8,9)]
Beide Ansätze führen zum gleichen Ergebnis, mit dem prägnanten Zip ([iter(s)]n) Ausdruck, der eine effizientere Syntax zum Aufteilen von Listen in Blöcke bietet.
Das obige ist der detaillierte Inhalt vonWie teilt „zip([iter(s)]*n)' eine Liste in Python effizient in gleiche Teile auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!