¿Cuál es el enfoque pitónico para lograr lo siguiente?
# Original lists:
list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]
# List of tuples from 'list_a' and 'list_b':
list_c = [(1,5), (2,6), (3,7), (4,8)]
Cada miembro de list_c
es una tupla, cuyo primer miembro es de list_a
y el segundo es de list_b
.
itertools
módulo define unzip_longest()
método que se detiene al final de la lista más larga, llenando los valores faltantes con algo que proporcione como parámetro.s/zip_longest()/izip_longest()
. Renombrado en Python 3.x azip_longest()
.itertools.product()
hace eso.En python 3.0 zip devuelve un objeto zip. Puede obtener una lista al llamar
list(zip(a, b))
.fuente
Puedes usar el mapa lambda
Esto también funcionará si las longitudes de las listas originales no coinciden
fuente
map(None, a,b)
Está buscando la función zip integrada .
fuente
No estoy seguro de si es una forma pitónica o no, pero esto parece simple si ambas listas tienen el mismo número de elementos:
fuente
Sé que esta es una vieja pregunta y ya fue respondida, pero por alguna razón, todavía quiero publicar esta solución alternativa. Sé que es fácil descubrir qué función integrada hace la "magia" que necesita, pero no está de más saber que puede hacerlo usted mismo.
fuente
card
en elif-elif
, por eso tiene elcontinue
. (De hecho, sin el nocontinue
tendrías que cambiar las listas: las dos tareas mencionadas anteriormente deberían mantenerse y convertirsecard = (list_1[i], '')
y,card = ('', list_2[1])
respectivamente).El resultado que mostró en la declaración del problema no es la tupla sino la lista
comprobar
considerando que quieres el resultado como tupla de list_a y list_b, haz
fuente
<map object at 0x000001F266DCE5C0>
o<zip object at 0x000002629D204C88>
. Al menos, la solución sobre mapa y zip (solo) parece estar incompleta (o demasiado complicada) para mí.Una alternativa sin usar
zip
:En caso de que uno quiera obtener no solo las tuplas 1 ° con 1 °, 2 ° con 2 ° ... sino todas las combinaciones posibles de las 2 listas, eso se haría con
fuente