suma - Producto cruzado por pares en Python
separar numeros pares e impares python (3)
Como solicitó una lista:
[(x, y) for x in a for y in b]
Pero puedes evitar la sobrecarga de una lista si solo estás recurriendo a ellos mediante el uso de generadores:
((x, y) for x in a for y in b)
Se comporta de forma idéntica en un bucle for
pero no da como resultado la creación de una list
.
Esta pregunta ya tiene una respuesta aquí:
- Obtener el producto cartesiano de una serie de listas? 10 respuestas
¿Cómo puedo obtener la lista de pares de productos cruzados de una lista de listas arbitrariamente largas en Python?
Ejemplo
a = [1, 2, 3]
b = [4, 5, 6]
crossproduct(a,b)
debe producir [[1, 4], [1, 5], [1, 6], ...]
.
Está buscando itertools.product si está itertools.product (al menos) Python 2.6.
>>> import itertools
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> itertools.product(a,b)
<itertools.product object at 0x10049b870>
>>> list(itertools.product(a,b))
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
Usando generadores no hay necesidad de itertools, simplemente:
gen = ((x, y) for x in a for y in b)
for u, v in gen:
print u, v