1
votes

Comment décompresser un tuple de listes

J'essaie de décompresser les éléments d'une liste qui est emballée dans un tuple.

['a', 'list', 'of', 'strings']
['inside', 'a', 'tuple']
etc...

Par exemple, je veux obtenir cet élément ('a')

J'ai essayé ceci:

for (i, words) in list(enumerate(myTuple)):
    print(words)

Mais cela renvoie la liste comme ceci

myTuple = (['a', 'list', 'of', 'strings'], ['inside', 'a', 'tuple'], ['extra', 'words', 'for', 'filler'])

Comment puis-je obtenir les éléments dans la liste?


4 commentaires

Vous décompressez un tuple qui contient des listes. Pour obtenir l'élément dans les listes, vous pouvez indexer la liste ou la parcourir.


Voulez-vous la sortie comme 'a', 'list', 'of', 'strings', 'inside', 'a', 'tuple', ...?


Note latérale: pour i, mots dans enumerate (myTuple): est tout ce dont vous avez besoin pour obtenir le comportement que vous avez. L'emballage dans la liste fait simplement un temporaire inutile, et vous n'avez pas besoin de parenthèses autour de la partie i, words .


@Haramoz Oui, je veux le 'a', 'list', etc.


3 Réponses :


-1
votes

Actuellement, vous êtes en train de parcourir toute la boucle et d'imprimer les éléments contenus dans la liste.

Cependant, si vous souhaitez accéder à un élément spécifique de la liste, faites-le simplement référence par son nom en utilisant .index ()

Alternativement, vous pouvez simplement imprimer (list (indexposition))


0 commentaires

0
votes

Vous pouvez utiliser réduire , par exemple. avec numpy

import operator
from functools import reduce
reduce(operator.add, myType, [])
# or, reduce(lambda x, y: x + y, myTuple)

Ou, base

from functools import reduce
reduce(append, myTuple)

Out[149]: 
array(['a', 'list', 'of', 'strings', 'inside', 'a', 'tuple', 'extra',
       'words', 'for', 'filler'], dtype='<U7')

réduire est une fonction d'opération de liste classique avec map , filter , etc. Il prend une valeur initiale, ici une liste vide, et applique successivement une fonction ( append ) à chaque élément de la séquence ( myTuple).


4 commentaires

Une très belle réponse, pourriez-vous s'il vous plaît expliquer un peu aussi, merci :)


Ok, j'ai ajouté une courte description. Cette fonction est cependant assez basique.


Je viens d'essayer cela en mode veille très rapidement ... Dit que append n'est pas défini? Qu'est-ce que je fais mal?


Oh, j'utilisais numpy, j'en ajouterai un pour la base



2
votes

Vous pouvez utiliser l'indexation de votre tuple puis les listes pour accéder aux éléments les plus internes. Par exemple, pour obtenir la chaîne 'a' , vous pouvez appeler:

from itertools import chain

for i in chain(*myTuple):
    print(i)

Si vous souhaitez parcourir tous les éléments des listes, vous pouvez utiliser la méthode chain de la forme itertools . Par exemple:

myTuple[0][0]


2 commentaires

La chaîne était exactement ce que je recherchais. Fonctionne parfaitement.


bonne réponse tbh.