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.
b = [i for sub in a for i in sub]
Cela fera l'affaire.
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()
.
import itertools
b = [i for i in itertools.chain(*[(1,3),(5,4)])]
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)
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