Comment utiliser map pour diviser une liste Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce tutoriel, nous allons explorer le potentiel de la fonction map() en Python et comment elle peut être utilisée pour diviser une liste en parties plus petites. Que vous travailliez avec de grands ensembles de données ou que vous ayez besoin de traiter les données de manière plus efficace, comprendre les techniques de division de liste peut grandement améliorer vos compétences en programmation Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/lambda_functions("Lambda Functions") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/AdvancedTopicsGroup -.-> python/iterators("Iterators") subgraph Lab Skills python/lists -.-> lab-398086{{"Comment utiliser map pour diviser une liste Python"}} python/lambda_functions -.-> lab-398086{{"Comment utiliser map pour diviser une liste Python"}} python/build_in_functions -.-> lab-398086{{"Comment utiliser map pour diviser une liste Python"}} python/iterators -.-> lab-398086{{"Comment utiliser map pour diviser une liste Python"}} end

Comprendre la fonction map()

La fonction map() en Python est une fonction intégrée puissante qui applique une fonction donnée à chaque élément d'un itérable (comme une liste, un tuple ou une chaîne de caractères) et renvoie un objet map. Cet objet map peut ensuite être converti en une autre structure de données, comme une liste ou un ensemble, pour accéder aux éléments transformés.

La syntaxe de la fonction map() est la suivante :

map(function, iterable)

Ici, function est l'opération que vous souhaitez effectuer sur chaque élément de l'iterable, et iterable est la séquence d'éléments que vous souhaitez transformer.

La fonction map() est utile lorsque vous avez besoin d'appliquer la même opération à plusieurs éléments d'une séquence. Elle peut vous faire gagner du temps et rendre votre code plus concis par rapport à l'utilisation d'une boucle for traditionnelle.

Regardons un exemple simple pour comprendre comment fonctionne la fonction map() :

## Example: Doubling each number in a list
numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(lambda x: x * 2, numbers))
print(doubled_numbers)  ## Output: [2, 4, 6, 8, 10]

Dans cet exemple, nous utilisons la fonction map() pour appliquer la fonction lambda lambda x: x * 2 à chaque élément de la liste numbers. L'objet map résultant est ensuite converti en une liste à l'aide de la fonction list().

La fonction map() peut être utilisée avec n'importe quel objet appelable, pas seulement les fonctions lambda. Vous pouvez passer une fonction personnalisée comme premier argument à map() pour effectuer des transformations plus complexes.

## Example: Converting Celsius to Fahrenheit
def celsius_to_fahrenheit(celsius):
    return (celsius * 9/5) + 32

temperatures = [20, 25, 30, 35, 40]
fahrenheit_temperatures = list(map(celsius_to_fahrenheit, temperatures))
print(fahrenheit_temperatures)  ## Output: [68.0, 77.0, 86.0, 95.0, 104.0]

Dans cet exemple, nous définissons une fonction personnalisée celsius_to_fahrenheit() et la passons comme premier argument à map(), ainsi que la liste des températures en degrés Celsius.

La fonction map() est un outil polyvalent qui peut être utilisé dans diverses situations, de la transformation de données à l'application d'opérations mathématiques complexes. Comprendre comment utiliser efficacement map() peut grandement améliorer la lisibilité et l'efficacité de votre code Python.

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 :

  1. iter(my_list) crée un itérateur pour la liste my_list.
  2. [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.
  3. 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.
  4. map(list, zip(*[iter(my_list)] * chunk_size)) applique la fonction list() à chaque morceau, convertissant les objets zip en listes.
  5. 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.

Applications pratiques de la division de listes

Diviser une liste Python à l'aide de la fonction map() peut être avantageux dans diverses situations réelles. Explorons quelques applications pratiques :

Traitement parallèle

Lorsque vous travaillez avec de grands ensembles de données, il est souvent nécessaire de traiter les données par petits morceaux pour améliorer l'efficacité et tirer parti des processeurs multi-cœurs. En divisant la liste en parties plus petites à l'aide de map() et zip(), vous pouvez ensuite distribuer le traitement de chaque morceau sur plusieurs threads ou processus, parallélisant efficacement le calcul.

Voici un exemple de comment vous pourriez utiliser map() et zip() pour diviser une liste et traiter les morceaux en parallèle à l'aide du module concurrent.futures :

import concurrent.futures

def process_chunk(chunk):
    ## Perform some processing on the chunk
    return [item * 2 for item in chunk]

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 2

with concurrent.futures.ThreadPoolExecutor() as executor:
    chunked_data = list(map(list, zip(*[iter(data)] * chunk_size)))
    results = list(executor.map(process_chunk, chunked_data))

print(results)
## Output: [[2, 4], [6, 8], [10, 12], [14, 16], [18, 20]]

Prétraitement des données

La division de liste peut être utile dans les tâches de prétraitement des données, comme la division d'un ensemble de données en ensembles d'entraînement et de validation pour les modèles d'apprentissage automatique. En divisant les données en petits morceaux, vous pouvez appliquer différentes transformations ou étapes de prétraitement à chaque partie des données, rendant le processus global plus efficace et gérable.

Traitement par lots

Dans les scénarios où vous devez effectuer une série d'opérations sur un grand ensemble de données, diviser la liste en petits lots peut aider à optimiser le temps de traitement. Par exemple, lors du téléchargement de fichiers sur un serveur distant ou de l'envoi de données à une API, vous pouvez diviser la liste de fichiers ou de points de données en petits morceaux et les traiter par lots, réduisant ainsi le risque de délais d'attente ou d'autres problèmes.

Gestion de la mémoire

Lorsque vous travaillez avec de grands ensembles de données qui ne peuvent pas tenir entièrement en mémoire, diviser la liste en petits morceaux peut vous aider à gérer l'utilisation de la mémoire plus efficacement. En traitant les données par parties plus petites, vous pouvez éviter de manquer de mémoire et maintenir le bon fonctionnement de votre application.

Amélioration de la lisibilité et de la maintenabilité

L'utilisation de map() et zip() pour diviser une liste peut rendre votre code plus concis et plus facile à lire, surtout par rapport à l'utilisation de boucles for traditionnelles. Cela peut améliorer la maintenabilité globale de votre base de code, car l'intention de l'opération de division de liste devient plus évidente.

En comprenant les applications pratiques de la division de liste à l'aide de la fonction map(), vous pouvez exploiter cette technique puissante pour écrire un code Python plus efficace, évolutif et lisible.

Résumé

À la fin de ce tutoriel, vous aurez une bonne compréhension de la fonction map() et de la manière de l'utiliser pour diviser des listes Python. Vous apprendrez les applications pratiques de la division de listes, ce qui vous permettra d'optimiser vos flux de traitement de données et d'écrire un code Python plus efficace. Grâce aux connaissances acquises, vous serez en mesure de relever une grande variété de défis de programmation Python impliquant la manipulation de listes et le traitement de données.