Iteratorprodukt auf Array von Arrays

8

Wie kann ich aus einem Array von Arrays einen Iterator für das Produkt von Arrays erstellen? Die Array-Größe ist nicht vorbestimmt.

Grundsätzlich funktioniert folgendes wie ich es wünsche:

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)

Aber ich möchte, dass es für ein Array von Arrays funktioniert, aber ich erhalte ein anderes Ergebnis:

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

Antworten:

5

Mit dem Operator splat können Sie das Array von Arrays in den Funktionsaufruf interpolieren:

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
quelle
1
Ja, das ist wie Pythons f(*x)sehr nützlich ...
Gwang-Jin Kim