Julia way for loops

Julia 可以用如 Python、R、C等语言的一般语法结构实现 For 循环,但 Julia 还有它自己的更简洁更有意思的方式。

先生成一个 Array:

1
2
m, n = 5, 5
A = fill(0, (m, n))

Output:

1
2
3
4
5
6
5×5 Array{Int64,2}:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

Normal loop:

1
2
3
4
5
6
for i in 1:m
for j in 1:n
A[i, j] = i + j
end
end
A

Output:

1
2
3
4
5
6
5×5 Array{Int64,2}:
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10

syntactic sugar for the same nested for loop

1
2
3
4
for i in 1:m, j in 1:n
B[i, j] = i + j
end
A

Output:

1
2
3
4
5
6
5×5 Array{Int64,2}:
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10

看,i和j可以放在一个for里!还有更简单的:

The more "Julia" way

1
C = [i + j for i in 1:m, j in 1:n]

Output:

1
2
3
4
5
6
5×5 Array{Int64,2}:
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10

Cool! 两个循环,一行搞定!