Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Développement Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

La conversion d'un tableau 2D en un tableau 1D s'appelle l'aplatissement. Il existe de nombreuses approches pour résoudre ce problème

Nous allons en explorer quelques-unes dans ce tutoriel

Voyons un exemple

Entrée

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

Sortie

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

#1. Boucles

La façon la plus courante de résoudre le problème est d'utiliser des boucles. Je pense que la plupart d'entre vous l'ont déjà compris. Voyons les étapes pour résoudre le problème en utilisant des boucles

  • Initialisez la liste des listes avec des données fictives et nommez-la données.
  • Initialisez maintenant une liste vide appelée liste_plate.
  • Interrogez les données
    • Déballez tous les éléments de la liste actuelle.
    • Ajoutez-les à la liste plate à l'aide de la méthode append.
  • Imprimez le résultat.

Voyez le code pour le problème ci-dessous

# initialisation des données et d'une liste vide
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
flat_list = []

#

 itération sur les données
for item in data :
 # ajout d'éléments à la flat_list
 flat_list = item

#

 impression du résultat de la flat_list
print(flat_list)

Vous pouvez utiliser une autre boucle pour ajouter des éléments de sous-liste à liste_plate au lieu d'un opérateur de concaténation. Nous pouvons également utiliser des compréhensions de liste au lieu de boucles

Les deux font le même travail. Voyons maintenant la prochaine façon de résoudre le problème

#2. Itertools - Chaîne

Nous allons utiliser une méthode appelée chaîne du module intégré itertools

La méthode chaîne itère sur chaque sous-liste et retourne les éléments jusqu'à ce qu'il n'y ait plus de sous-liste. Elle renvoie un itérable que nous devons convertir en liste

Voyons les étapes de la résolution du problème

  • Initialisez la liste de listes avec des données fictives et nommez-la données.
  • Obtenez l'itérable aplati en utilisant itertools.chain(*data).
  • Convertissez l'itérable résultant en une liste.
  • Imprimez la liste aplatie.

Vous pouvez consulter le code dans l'extrait ci-dessous

# importation du module
import itertools

#

 initialisation des données
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

#

 aplatissement de la liste et stockage du résultat
flat_list = itertools.chain(*data)

#

 conversion de l'itérable en liste et impression
print(list(flat_list))

#3. Aplatir des listes à plusieurs niveaux

Nous avons vu comment aplatir une liste de listes. Les méthodes décrites ci-dessus pour appliquer une liste ne fonctionneront pas pour les listes à plusieurs niveaux. Voyons un exemple

Entrée

[1, [2, 3, [4, 5]], 6, [<x>[7]</x>, [8, 9]

]]
Sortie

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Comme nous ne connaissons pas la profondeur des listes avant le programme, nous devons utiliser la récursivité pour résoudre le problème

  • Initialisez les données comme indiqué dans l'exemple et nommez-les données.
  • Initialisez une liste vide appelée liste_plate.
  • Écrivez une fonction appelée aplatir_liste
    • Interrogez les éléments de la liste donnée.
    • Si l'élément est une liste, appelez récursivement la même fonction.
    • Si l'élément n'est pas une liste, ajoutez-le à la plaque de liste.
  • Invitez la fonction avec des données.
  • La fonction remplira tous les éléments de la liste liste_plate .
  • Imprimez la liste_plate pour vérifier le résultat.

Ouf ! Il y a beaucoup d'étapes à coder. Ne vous inquiétez pas. La conversion des instructions ci-dessus en code ne prendra pas plus de quelques minutes

# initialisation des données et de la liste vide
data = [1, [2, 3, [4, 5]], 6, [<x>[7]</x>, [8, 9]]]
flat_list = []

# fonction
def flatten_list(data) :
 # itération sur les données
 for element in data :
       # vérification de la présence d'une liste
 if type(element) == list :
 # appel de la même fonction avec l'élément actuel comme nouvel argument
 flatten_list(element)
 else :
 flat_list.append(element)

#

 aplatissement de la liste donnée
flatten_list(data)

#

 impression de la liste plate
print(flat_list)

Rappelez-vous que nous n'avons pas converti la liste existante. Au lieu de cela, nous avons créé une nouvelle liste avec l'élément de liste donné

Conclusion

J'espère que vous avez apprécié ce tuteur. Il peut y avoir beaucoup d'autres façons d'applatir une liste en Python, mais j'ai pensé que les méthodes ci-dessus étaient probablement les plus faciles

Bon codage 🙂 .

  • Hafeezul Kareem Shaik
    Auteur
Merci à nos sponsors
D'autres lectures intéressantes sur le développement
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus