Aufteilen einer Liste in Chunks in Python

Azaz Farooq 10 Oktober 2023
  1. Liste in Python in Chunks aufteilen mit der List Comprehension Methode
  2. Liste in Python in Chunks aufteilen mit der Methode itertools
  3. Liste in Python mit der Funktion lambda in Chunks zerlegen
  4. Liste in Python in Chunks aufteilen mit der lambda & islice Methode
  5. Liste in Python mit der Methode NumPy in Chunks zerlegen
  6. Liste in Python mit einer benutzerdefinierten Funktion in Chunks aufteilen
Aufteilen einer Liste in Chunks in Python

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