web-dev-qa-db-fra.com

python: créer une liste de tuples à partir de listes

J'ai deux listes:

x = ['1', '2', '3']
y = ['a', 'b', 'c']

et je dois créer une liste de tuples à partir de ces listes, comme suit:

z = [('1','a'), ('2','b'), ('3','c')]

J'ai essayé de le faire comme ceci:

z = [ (a,b) for a in x for b in y ]

mais a entraîné:

[('1', '1'), ('1', '2'), ('1', '3'), ('2', '1'), ('2', '2'), ('2', '3'), ('3', '1'), ('3', '2'), ('3', '3')]

c'est-à-dire une liste de tuples de chaque élément de x avec chaque élément de y ... quelle est la bonne approche pour faire ce que je voulais faire? Je vous remercie...

EDIT: Les deux autres doublons mentionnés avant l'édition sont de ma faute, ils l'ont indenté dans une autre boucle for par erreur ...

32
amyassin

Utilisez la fonction intégrée Zip() :

Dans Python 3:

z = list(Zip(x,y))

Dans Python 2:

z = Zip(x,y)
50
Udi

Vous recherchez la fonction Zip builtin . De la documentation:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = Zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]
11
mjhm

Vous recherchez la fonction Zip.

Tiré directement de la question: Comment fusionner des listes dans une liste de tuples en Python?

>>> list_a = [1, 2, 3, 4]
>>> list_b = [5, 6, 7, 8]
>>> Zip(list_a,list_b)
[(1, 5), (2, 6), (3, 7), (4, 8)]
9
mal-wan