¿Cómo unirse a las listas de elementos en Python?

l1 = [4, 6, 8] l2 = [a, b, c] 

resultado = [(4,a),(6,b),(8,c)]

¿Cómo puedo hacer eso?

Utilice zip .

 l1 = [1, 2, 3] l2 = [4, 5, 6] >>> zip(l1, l2) [(1, 4), (2, 5), (3, 6)] 

Tenga en cuenta que si sus listas son de diferentes longitudes, el resultado se truncará a la longitud de la entrada más corta.

 >>> print zip([1, 2, 3],[4, 5, 6, 7]) [(1, 4), (2, 5), (3, 6)] 

También puedes usar zip con más de dos listas:

 >>> zip([1, 2, 3], [4, 5, 6], [7, 8, 9]) [(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

Si tiene una lista de listas, puede llamar a zip usando un asterisco:

 >>> l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> zip(*l) [(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

La función estándar de zip hace esto por ti:

 >>> l1 = [4, 6, 8] >>> l2 = ["a", "b", "c"] >>> zip(l1, l2) [(4, 'a'), (6, 'b'), (8, 'c')] 

Si está utilizando Python 3.x, zip devuelve un generador y puede convertirlo en una lista usando el constructor list() :

 >>> list(zip(l1, l2)) [(4, 'a'), (6, 'b'), (8, 'c')] 
 >>> l1 = [4, 6, 8]; l2 = ['a', 'b', 'c'] >>> zip(l1, l2) [(4, 'a'), (6, 'b'), (8, 'c')] 

Si las listas tienen la misma longitud, o si desea que la longitud de la lista sea la longitud de la lista más corta, entonces use zip, como han señalado otras personas.

Si las listas tienen diferentes longitudes, entonces puede usar el map con una función de transformación de None :

 >>> l1 = [1, 2, 3, 4, 5] >>> l2 = [9, 8, 7] >>> map(None, l1, l2) [(1, 9), (2, 8), (3, 7), (4, None), (5, None)] 

Tenga en cuenta que los valores ‘extra’ se emparejan con None .

También vale la pena señalar que tanto el zip como el map pueden usarse con cualquier número de iterables:

 >>> zip('abc', 'def', 'ghi') [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')] >>> map(None, 'abc', 'def', 'gh') [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', None)]