Aufteilen einer Python-Liste mit map()
Einer der gängigen Anwendungsfälle der map()
-Funktion ist das Aufteilen einer Python-Liste in kleinere Teile. Dies kann nützlich sein, wenn Sie einen großen Datensatz in kleineren Teilen verarbeiten müssen oder wenn Sie verschiedene Operationen auf verschiedene Teile einer Liste anwenden möchten.
Um eine Liste mit map()
aufzuteilen, können Sie diese mit der zip()
-Funktion kombinieren, die Elemente aus mehreren iterierbaren Objekten paarweise zusammenführt.
Hier ist ein Beispiel:
## Example: Splitting a list into chunks of size 2
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 2
chunked_list = list(map(list, zip(*[iter(my_list)] * chunk_size)))
print(chunked_list)
## Output: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
In diesem Beispiel erstellen wir zunächst eine Liste my_list
mit 10 Elementen. Anschließend definieren wir eine chunk_size
von 2, was bedeutet, dass wir die Liste in Teile zu jeweils 2 Elementen aufteilen möchten.
Die map()
-Funktion wird in Kombination mit zip()
verwendet, um die Liste aufzuteilen. So funktioniert es:
iter(my_list)
erstellt einen Iterator für die my_list
.
[iter(my_list)] * chunk_size
erstellt eine Liste von chunk_size
(in diesem Fall 2) Iteratoren, die alle auf denselben my_list
-Iterator zeigen.
zip(*[iter(my_list)] * chunk_size)
verwendet die zip()
-Funktion, um die Elemente der Iteratoren paarweise zusammenzuführen und die Liste effektiv in Teile der Größe chunk_size
aufzuteilen.
map(list, zip(*[iter(my_list)] * chunk_size))
wendet die list()
-Funktion auf jeden Teil an, um die zip
-Objekte in Listen umzuwandeln.
- Das resultierende
map
-Objekt wird mit list()
in eine Liste umgewandelt, um die endgültige aufgeteilte Liste zu erhalten.
Sie können den Wert von chunk_size
anpassen, um die Liste je nach Bedarf in Teile unterschiedlicher Größe aufzuteilen.
Ein weiteres Beispiel für das Aufteilen einer Liste mit map()
und zip()
ist die Umwandlung einer Liste von Zeichenketten in eine Liste von Listen, wobei jede innere Liste ein Wort darstellt:
## Example: Splitting a list of strings into a list of lists of words
sentence = "The quick brown fox jumps over the lazy dog."
words_list = sentence.split()
word_lengths = list(map(len, words_list))
print(word_lengths)
## Output: [3, 5, 5, 3, 5, 4, 3, 3]
words_by_length = list(map(list, zip(words_list, word_lengths)))
print(words_by_length)
## Output: [['The', 3], ['quick', 5], ['brown', 5], ['fox', 3], ['jumps', 5], ['over', 4], ['the', 3], ['lazy', 3], ['dog.', 4]]
In diesem Beispiel teilen wir zunächst den Satz mit der split()
-Methode in eine Liste von Wörtern auf. Anschließend verwenden wir map()
, um die Länge jedes Wortes zu ermitteln und in der word_lengths
-Liste zu speichern.
Schließlich verwenden wir map()
und zip()
, um eine Liste von Listen zu erstellen, wobei jede innere Liste ein Wort und seine Länge enthält.
Durch das Beherrschen der Verwendung von map()
und zip()
zum Aufteilen von Listen können Sie kompakteren und effizienteren Python-Code schreiben, insbesondere wenn Sie mit großen Datensätzen oder komplexen Datenstrukturen arbeiten.