web-dev-qa-db-fra.com

en Python, comment joindre une liste de tuples en une seule liste?

Suite à ma question précédente Comment grouper des éléments de la liste en tuple?

Si j'ai une liste de tuples, par exemple

a = [(1,3),(5,4)]

Comment puis-je décompresser les n-uplets et les reformater en une seule liste

b = [1,3,5,4]

Je pense que cela a également à voir avec la fonction iter, mais je ne sais vraiment pas comment faire cela. S'il te plaît, éclaire-moi.

13
LWZ
b = [i for sub in a for i in sub]

Cela fera l'affaire.

30
Volatility
In [11]: list(itertools.chain(*a))
Out[11]: [1, 3, 5, 4]

Si vous avez juste besoin d'itérer sur 1, 3, 5, 4, vous pouvez vous débarrasser de l'appel list().

8
NPE
import itertools
b = [i for i in itertools.chain(*[(1,3),(5,4)])]
2
danodonovan

Il suffit de parcourir la liste a et de décompresser les n-uplets:

l = []
for x,y in a:
   l.append(x)
   l.append(y)
2
Schuh

Autrement:

a = [(1,3),(5,4)]
b = []

for i in a:
    for j in i:
        b.append(j)

print b

Cela ne gérera que les n-uplets de la liste (a) tho. Vous devez ajouter des instructions if-else si vous souhaitez également analyser des variables non structurées, comme;

a = [(1,3),(5,4), 23, [21, 22], {'somevalue'}]
b = []

for i in a:
    if type(i) == (Tuple) or type(i) == (list) or type(i) == (set):
        for j in i:
            b.append(j)
    else:
        b.append(i)

print b
1
user1467267