2011-09-05 14 views
26

crear Tengo dos listas:pitón: lista de tuplas de listas

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

y necesito para crear una lista de tuplas de estas listas, de la siguiente manera:

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

He intentado hacerlo de esta manera:

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

pero como resultado:

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

es decir, una lista de tuplas de cada elemento en x con cada elemento en y ... ¿cuál es el enfoque correcto para hacer lo que yo quería hacer? gracias ...

EDIT: Los otros dos duplicados mencionados antes de la edición es mi culpa, con sangría en otro ciclo for por error ...

+3

Esta pregunta ya ha sido pedido: http://stackoverflow.com/questions/2407398/python-merge-items-of-two-lists-into- a-list-of-tuples – mwan

+0

Mea Culpa, no pude encontrar eso en la búsqueda, gracias :) – amyassin

Respuesta

38

Uso de la función interna zip():

z = zip(x,y) 
10

Está buscando la función zip builtin. De la documentación:

>>> x = [1, 2, 3] 
>>> y = [4, 5, 6] 
>>> zipped = zip(x, y) 
>>> zipped 
[(1, 4), (2, 5), (3, 6)] 
Cuestiones relacionadas