„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie teilen "Zip ([Iter)*n) eine Liste in Python effizient in gleiche Stücke auf?

Wie teilen "Zip ([Iter)*n) eine Liste in Python effizient in gleiche Stücke auf?

Gepostet am 2025-02-06
Durchsuche:139

How does `zip([iter(s)]*n)` efficiently split a list into equal chunks in Python?

dekonstruieren zip ( [iter (s)] n) in Python

in Python, die zip () -Funktion kombiniert Elemente aus mehreren Ierables in eine einzelne iterable Tupel. Bei Verwendung mit dem Syntax -Zip ( [iter (s)] n) bietet es eine bequeme Möglichkeit, eine Liste in Teile gleicher Größe aufzuteilen.

wie es funktioniert:

der Ausdruck [iter (s)] n erstellt eine Liste, die n Kopien des Iterators über die Liste s enthält. Jede Kopie des Iterators beginnt am Anfang der Liste. Die *args packen die Liste in Argumente für ZIP () aus, was dazu führt, dass n iterables an die Funktion übergeben wird. (

[iter (s)]

n) mit ausführlicher Code: def verbose_chunk (s, n): "" "Gibt eine Liste von Stücken gleicher Größe aus einer Liste zurück." "" " Stücke = [] für i in Reichweite (n): Chunk = [] für j in Reichweite (Len (s) // n): Chunk.Append (Next (iter (s))) Chunks.Append (Tuple (Chunk)) Return Chunks

Dieser Code iteriert zuerst über die gewünschte Anzahl von Brocken. Für jedes Stück verwendet es eine verschachtelte Schleife, um die Elemente in der Liste zu iterieren und sie zum Chunk hinzuzufügen. Der Stück wird dann in ein Tupel konvertiert und zur Liste der Stücke hinzugefügt. , 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 ergeben das gleiche Ergebnis mit dem, mit dem Concise Zip (

[iter (s)]
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
Neuestes Tutorial Mehr>

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