Duplicata possible : Une fonction de transposition/décompression en Python
J'ai une liste qui ressemble à ceci :
list = (('1','a'),('2','b'),('3','c'),('4','d'))
Je veux séparer la liste en 2 listes.
list1 = ('1','2','3','4') list2 = ('a','b','c','d')
Je peux le faire par exemple avec :
list1 = [] list2 = [] for i in list: list1.append(i[0]) list2.append(i[1])
Mais je veux savoir s'il existe une solution plus élégante.
Cette question a déjà des réponses:
- Une fonction Transpose/Unzip en Python (inverse du zip) (4 réponses )
Réponses
Trop de publicités?>>> source_list = ('1','a'),('2','b'),('3','c'),('4','d')
>>> list1, list2 = zip(*source_list)
>>> list1
('1', '2', '3', '4')
>>> list2
('a', 'b', 'c', 'd')
Edit : Notez que zip(*iterable)
est son propre inverse :
>>> list(source_list) == zip(*zip(*source_list))
True
Lors du déballage en deux listes, cela devient :
>>> list1, list2 = zip(*source_list)
>>> list(source_list) == zip(list1, list2)
True
Ajout suggéré par rocksportrocker.
S.Lott
Points
207588