多维数组理解
嵌套的 for
循环可用于迭代许多独特的迭代。
result = []
for a = iterable_a
for b = iterable_b
push!(result, expression)
end
end
类似地,可以将多个迭代规范提供给阵列理解。
[expression for a = iterable_a, b = iterable_b]
例如,以下可用于生成 1:3
和 1:2
的笛卡尔积。
julia> [(x, y) for x = 1:3, y = 1:2]
3×2 Array{Tuple{Int64,Int64},2}:
(1,1) (1,2)
(2,1) (2,2)
(3,1) (3,2)
扁平化的多维数组理解类似,只是它们失去了形状。例如,
julia> [(x, y) for x = 1:3 for y = 1:2]
6-element Array{Tuple{Int64,Int64},1}:
(1, 1)
(1, 2)
(2, 1)
(2, 2)
(3, 1)
(3, 2)
是上述的扁平变体。句法差异在于使用了额外的 for
而不是逗号。