Python >> Tutoriel Python >  >> Python

Convertir Tuple en Liste | La manière la plus pythonique

Répondre :Le moyen le plus simple, le plus direct et le plus lisible de convertir un tuple en liste est le list(tuple) intégré de Python. fonction. Vous pouvez passer n'importe quel itérable (comme un tuple, une autre liste ou un ensemble) comme argument dans cette soi-disant fonction constructeur et il renvoie une nouvelle structure de données de liste qui contient tous les éléments de l'itérable.

Convertir un tuple en liste semble trivial, je sais. Mais continuez à lire et je vais vous montrer des façons surprenantes de gérer ce problème. Je vous garantis que vous apprendrez beaucoup de choses précieuses à partir des 3 à 5 minutes que vous passerez à lire ce tutoriel ! 🙂

Problème :Soit un tuple d'éléments. Créez une nouvelle liste avec les mêmes éléments, convertissant ainsi le tuple en liste.

Exemple :Vous avez le tuple suivant.

t = (1, 2, 3)

Vous souhaitez créer une nouvelle structure de données de liste contenant les mêmes éléments entiers :

[1, 2, 3]

Jetons un coup d'œil aux différentes manières de convertir un tuple en liste et discutons de la manière la plus Pythonique dans quelles circonstances.

Vous pouvez obtenir un aperçu rapide dans le shell de code interactif suivant. Des explications pour chaque méthode suivent ensuite :

Exercice :Exécutez le code. Parcourez chaque méthode - laquelle préférez-vous ? Comprenez-vous chacun d'eux ?

Plongeons-nous dans les six méthodes.

Méthode 1 :Constructeur de liste

Le moyen le plus simple, le plus direct et le plus lisible de convertir un tuple en liste est le list(iterable) intégré de Python. fonction. Vous pouvez passer n'importe quel itérable (comme une liste, un tuple ou un ensemble) comme argument dans cette soi-disant fonction constructeur et il renvoie une nouvelle structure de données de tuple qui contient tous les éléments de l'itérable.

Voici un exemple :

# Method 1: list() constructor
t = (1, 2, 3)
lst = list(t)
print(lst)
# [1, 2, 3]

C'est la manière la plus Pythonic si une conversion plate d'un seul tuple en une liste est tout ce dont vous avez besoin. Mais que se passe-t-il si vous souhaitez convertir plusieurs tuples en une seule liste ?

Méthode 2 :Déballage

Il existe une alternative qui fonctionne pour un ou plusieurs tuples pour convertir un ou plusieurs tuples en une liste. Cette méthode est tout aussi efficace et prend moins de caractères que la Méthode 1 (au détriment de la lisibilité pour les codeurs débutants). Ça semble intéressant? Plongeons-nous dans le déballage et l'opérateur astérisque !

L'opérateur astérisque * est également appelé "opérateur étoile" et vous pouvez l'utiliser comme préfixe sur n'importe quel tuple (ou liste). L'opérateur "décompressera" tous les éléments dans une structure externe, par exemple, dans une liste d'arguments ou dans un type de conteneur englobant tel qu'une liste ou un tuple.

Voici comment cela fonctionne pour décompresser tous les éléments d'un tuple dans une liste englobante, convertissant ainsi le tuple d'origine en une nouvelle liste.

# Method 2: Unpacking
t = (1, 2, 3)
lst = [*t]
print(lst)
# [1, 2, 3]

Vous décompressez tous les éléments du tuple t dans la structure externe [*t] . La force de cette approche est, bien qu'elle soit encore plus concise que la norme list(...) fonction—que vous pouvez décompresser plusieurs valeurs !

Méthode 3 :décompresser pour convertir plusieurs tuples en une seule liste

Voyons comment créer une liste à partir de plusieurs tuples :

# Method 3: Unpacking Multiple Tuples
t1 = (1, 2, 3)
t2 = (4, 5, 6)
lst = [*t1, *t2]
print(lst)
# [1, 2, 3, 4, 5, 6]

L'expression [*t1, *t2] décompresse tous les éléments dans les tuples t1 et t2 dans la liste externe. Cela vous permet de convertir plusieurs tuples en une seule liste.

Méthode 4 :Générateur d'expressions pour convertir plusieurs tuples en liste

Si vous avez plusieurs tuples stockés dans une liste de listes (ou une liste de tuples) et que vous souhaitez les convertir en une seule liste, vous pouvez utiliser une courte instruction d'expression de générateur pour parcourir tous les tuples internes et tous les éléments de chaque tuple interne. . Ensuite, vous placez chacun de ces éléments dans la structure de la liste :

# Method 4: Generator Expression
ts = ((1, 2), (3, 4), (5, 6, 7))
lst = [x for t in ts for x in t]
print(lst)
# [1, 2, 3, 4, 5, 6, 7]

C'est la manière la plus Pythonique de convertir une liste de tuples (ou tuple de tuples) en un tuple. C'est court, efficace et lisible. Vous ne créez aucune structure de données d'assistance qui occupe de l'espace en mémoire.

Mais que se passe-t-il si vous souhaitez enregistrer quelques caractères supplémentaires ?

Méthode 5 :Générateur d'expression + déballage

D'accord, vous ne devriez pas faire cette dernière méthode en utilisant l'opérateur astérisque - c'est illisible - mais je n'ai pas pu m'empêcher de l'inclure ici :

# Method 5: Generator Expression + Unpacking
t = ((1, 2), (3, 4), (5, 6, 7))
lst = [*(x for t in ts for x in t)]
print(lst)
# [1, 2, 3, 4, 5, 6, 7]

Plutôt que d'utiliser le list(...) fonction pour convertir l'expression du générateur en une liste, vous utilisez le [...] structure d'assistance pour indiquer qu'il s'agit d'une liste que vous souhaitez et décompressez tous les éléments de l'expression du générateur dans la liste. Bien sûr, ce n'est pas très lisible, mais vous pourriez voir une telle chose dans la pratique (si les codeurs professionnels veulent montrer leurs compétences ;)).

Méthode 6 :boucle for simple

Terminons cet article en montrant la chose la plus simple :utiliser une boucle for. Faire des choses simples est une excellente idée en codage. Et, alors que le problème est résolu de manière plus élégante dans la Méthode 1 (en utilisant le list() constructeur), utiliser une simple boucle pour remplir une liste initialement vide est la stratégie par défaut.

# Method 6: Simple For Loop
t = (1, 2, 3, 4)
lst = []
for x in t:
    lst.append(x)
print(lst)
# [1, 2, 3, 4]

Pour comprendre le fonctionnement du code, vous pouvez visualiser son exécution dans le visualiseur de mémoire interactif :

Exercice  :À quelle fréquence la condition de la boucle est-elle vérifiée ?

Vous verrez une méthode de conversion aussi simple dans les bases de code des débutants Python et des programmeurs qui passent à Python en provenance d'autres langages de programmation tels que Java ou C++. C'est lisible mais ça manque de concision.

J'espère que l'article vous a plu ! Veuillez trouver des articles connexes ici :

Articles associés :

  • Copie de la liste
  • Liste du guide complet
  • Convertir la liste en tuple

Si vous souhaitez améliorer vos compétences en Python, j'ai créé une académie en ligne entièrement basée sur le courrier électronique (et c'est gratuit).

N'hésitez pas à rejoindre notre grande communauté de codeurs Python ambitieux et à télécharger vos ressources Python gratuites (feuilles de triche PDF).