Diviser une liste Python avec map()
L'un des cas d'utilisation courants de la fonction map()
consiste à diviser une liste Python en parties plus petites. Cela peut être utile lorsque vous avez besoin de traiter un grand ensemble de données par petits morceaux ou lorsque vous souhaitez appliquer différentes opérations à différentes parties d'une liste.
Pour diviser une liste à l'aide de map()
, vous pouvez la combiner avec la fonction zip()
, qui associe les éléments de plusieurs itérables.
Voici un exemple :
## 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]]
Dans cet exemple, nous créons d'abord une liste my_list
avec 10 éléments. Nous définissons ensuite une chunk_size
(taille de morceau) de 2, ce qui signifie que nous voulons diviser la liste en morceaux de 2 éléments chacun.
La fonction map()
est utilisée en combinaison avec zip()
pour effectuer la division de la liste. Voici comment cela fonctionne :
iter(my_list)
crée un itérateur pour la liste my_list
.
[iter(my_list)] * chunk_size
crée une liste de chunk_size
(2 dans ce cas) itérateurs, tous pointant vers le même itérateur de my_list
.
zip(*[iter(my_list)] * chunk_size)
utilise la fonction zip()
pour associer les éléments des itérateurs, divisant ainsi efficacement la liste en morceaux de taille chunk_size
.
map(list, zip(*[iter(my_list)] * chunk_size))
applique la fonction list()
à chaque morceau, convertissant les objets zip
en listes.
- L'objet
map
résultant est converti en une liste à l'aide de list()
pour obtenir la liste finale divisée en morceaux.
Vous pouvez ajuster la valeur de chunk_size
pour diviser la liste en morceaux de différentes tailles selon vos besoins.
Un autre exemple de division d'une liste à l'aide de map()
et zip()
consiste à convertir une liste de chaînes de caractères en une liste de listes, où chaque sous - liste représente un mot :
## 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]]
Dans cet exemple, nous divisons d'abord la phrase en une liste de mots à l'aide de la méthode split()
. Nous utilisons ensuite map()
pour obtenir la longueur de chaque mot et la stocker dans la liste word_lengths
.
Enfin, nous utilisons map()
et zip()
pour créer une liste de listes, où chaque sous - liste contient un mot et sa longueur.
En maîtrisant l'utilisation de map()
et zip()
pour la division de listes, vous pouvez écrire un code Python plus concis et efficace, surtout lorsque vous travaillez avec de grands ensembles de données ou des structures de données complexes.