Aufteilen einer Liste in Chunks in Python
- Liste in Python in Chunks aufteilen mit der List Comprehension Methode
-
Liste in Python in Chunks aufteilen mit der Methode
itertools
-
Liste in Python mit der Funktion
lambda
in Chunks zerlegen -
Liste in Python in Chunks aufteilen mit der
lambda
&islice
Methode -
Liste in Python mit der Methode
NumPy
in Chunks zerlegen - Liste in Python mit einer benutzerdefinierten Funktion in Chunks aufteilen
Eine der Python-Datenstrukturen, die gemischte Werte oder Elemente in sich enthalten können, heißt Listen. In diesem Artikel werden verschiedene Möglichkeiten zum Aufteilen einer Liste in Blöcke vorgestellt. Sie können ein beliebiges Codebeispiel verwenden, das Ihren Anforderungen entspricht.
Liste in Python in Chunks aufteilen mit der List Comprehension Methode
Wir können List Comprehension verwenden, um eine Python-Liste in Chunks aufzuteilen. Es ist ein effizienter Weg, die Operationen zu kapseln, um den Code leichter verständlich zu machen.
Der vollständige Beispielcode ist unten angegeben.
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
n = 3
output = [test_list[i : i + n] for i in range(0, len(test_list), n)]
print(output)
Ausgabe:
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]
range(0, len(test_list), n)
gibt einen Bereich von Zahlen zurück, der bei 0 beginnt und bei len(test_list)
endet, mit einem Schritt von n
. Zum Beispiel gibt range(0, 10, 3)
den Wert (0, 3, 6, 9)
zurück.
test_list[i:i + n]
liefert den Teil der Liste, der beim Index i
beginnt und ausschließlich bei i + n
endet. Der letzte Chunk der geteilten Liste ist test_list[9]
, aber die berechneten Indizes test_list[9:12]
werden keinen Fehler auslösen, sondern gleich test_list[9]
sein.
Liste in Python in Chunks aufteilen mit der Methode itertools
Diese Methode liefert einen Generator, der mit einer for
-Schleife iteriert werden muss. Ein Generator ist eine effiziente Art, einen Iterator zu beschreiben.
from itertools import zip_longest
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
def group_elements(n, iterable, padvalue="x"):
return zip_longest(*[iter(iterable)] * n, fillvalue=padvalue)
for output in group_elements(3, test_list):
print(output)
Ausgabe:
('1', '2', '3')
('4', '5', '6')
('7', '8', '9')
('10', 'x', 'x')
[iter(iterable)]*n
erzeugt einen Iterator und iteriert n
Mal in der Liste. Ein Round-Robin jedes Iterators wird dann effektiv durch izip-longest
durchgeführt; da dies ein ähnlicher Iterator ist, wird jeder solche Aufruf weitergeführt, was dazu führt, dass jeder solche zip-round-robin ein Tupel von n Objekten erzeugt.
Liste in Python mit der Funktion lambda
in Chunks zerlegen
Es ist möglich, eine einfache lambda
-Funktion zu verwenden, um die Liste in eine bestimmte Größe oder kleinere Stücke zu unterteilen. Diese Funktion arbeitet mit der ursprünglichen Liste und einer Variablen der Größe N, iteriert über alle Listenelemente und teilt sie in Stücke der Größe N.
Der vollständige Beispielcode ist unten angegeben:
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
x = 3
def final_list(test_list, x):
return [test_list[i : i + x] for i in range(0, len(test_list), x)]
output = final_list(test_list, x)
print("The Final List is:", output)
Ausgabe:
The Final List is: [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]
Liste in Python in Chunks aufteilen mit der lambda
& islice
Methode
Eine lambda
-Funktion kann mit der islice
-Funktion verwendet werden und einen Generator erzeugen, der über die Liste iteriert. Die Funktion islice
erzeugt einen Iterator, der ausgewählte Elemente aus der Iterable extrahiert. Wenn der Start ungleich Null ist, werden die Elemente der Iterablen übersprungen, bevor der Start erreicht wird. Die Elemente werden dann nacheinander zurückgegeben, es sei denn, es wird ein Schritt größer als eins gesetzt, der zum Überspringen von Elementen führt.
Der vollständige Beispielcode ist unten angegeben:
from itertools import islice
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
def group_elements(lst, chunk_size):
lst = iter(lst)
return iter(lambda: tuple(islice(lst, chunk_size)), ())
for new_list in group_elements(test_list, 3):
print(new_list)
Ausgabe
('1', '2', '3')
('4', '5', '6')
('7', '8', '9')
('10',)
Liste in Python mit der Methode NumPy
in Chunks zerlegen
Die Bibliothek NumPy
kann auch verwendet werden, um die Liste in N-große Chunks zu unterteilen. Die Funktion array_split()
unterteilt das Array in Unter-Arrays bestimmter Größe n
.
Der vollständige Beispielcode ist unten angegeben:
import numpy
n = numpy.arange(11)
final_list = numpy.array_split(n, 4)
print("The Final List is:", final_list)
Die Funktion arange
ordnet die Werte entsprechend dem angegebenen Argument und die Funktion array_split()
erzeugt die Liste/Unterarrays basierend auf dem in ihr als Parameter angegebenen Parameter.
Ausgabe:
The Final List is: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([ 9, 10])]
Liste in Python mit einer benutzerdefinierten Funktion in Chunks aufteilen
Diese Methode iteriert über die Liste und erzeugt aufeinanderfolgende Chunks der Größe n, wobei n die Zahl bezeichnet, bei der eine Aufteilung erfolgen soll. In dieser Funktion wird das Schlüsselwort yield
verwendet, das es ermöglicht, eine Funktion anzuhalten und als Wert wiederherzustellen, wenn die Ausführung unterbrochen wird. Dies ist der wichtige Unterschied zu einer normalen Funktion. Eine normale Funktion kann nicht dorthin zurückkehren, wo sie aufgehört hat. Wenn wir in einer Funktion eine yield
-Anweisung verwenden, wird die Funktion als Generator bezeichnet. Ein Generator produziert oder gibt Werte zurück und kann nicht als einfache Funktion bezeichnet werden, sondern als Iterable, d. h. mit einer Schleife.
Der vollständige Beispielcode lautet wie folgt.
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
def split_list(lst, n):
for i in range(0, len(lst), n):
yield lst[i : i + n]
n = 3
output = list(split_list(test_list, n))
print(output)
Ausgabe:
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]
Verwandter Artikel - Python List
- Alle Vorkommen eines Elements aus einer Liste in Python entfernen
- Konvertieren eines Dictionaries in eine Liste in Python
- Duplikate aus Liste entfernen in Python
- Wie erhält man den Durchschnitt einer Liste in Python
- Was ist der Unterschied zwischen den Listenmethoden append und extend
- Wie man eine Liste in Python in eine Zeichenkette konvertiert