Producto de iteradores en una matriz de matrices

8

¿Cómo puedo crear un iterador en el producto de matrices, a partir de una matriz de matrices? El tamaño de la matriz no está predeterminado.

Básicamente lo siguiente funciona como deseo:

for i in Base.Iterators.product([1,2,3],[4,5])
   print(i)
end
(1, 4)(2, 4)(3, 4)(1, 5)(2, 5)(3, 5)

Pero me gustaría que funcionara para una variedad de matrices, pero obtengo un resultado diferente:

x = [[1,2,3],[4,5]]
for i in Base.Iterators.product(x)
   print(i)
end
([1, 2, 3],)([4, 5],)
Timothée HENRY
fuente

Respuestas:

5

Puede usar el operador splat para interpolar la matriz de matrices en la llamada a la función:

julia> x = [[1,2,3],[4,5]];

julia> for i in Base.Iterators.product(x...)
          print(i)
       end
(1, 4)(2, 4)(3, 4)(1, 5)(2, 5)(3, 5)
David Varela
fuente
1
Sí, eso es como pitones f(*x)muy útil ...
Gwang-Jin Kim