Produto Iteradores em matriz de matrizes

8

Como posso criar um iterador no produto de matrizes, a partir de uma matriz de matrizes? O tamanho da matriz não predeterminado.

Basicamente, o seguinte funciona como eu desejo:

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)

Mas gostaria que funcionasse para uma matriz de matrizes, mas estou obtendo 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
fonte

Respostas:

5

Você pode usar o operador splat para interpolar a matriz de matrizes na chamada de função:

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
fonte
1
Sim, isso é como pitões f(*x)muito úteis ...
Gwang-Jin Kim