速记for循环遍历具有值和索引的数组

时间:2019-10-03 19:01:09

标签: julia

是否有便捷/简便的方法来遍历数组上的for循环,同时获取值和索引?

基本选项:

i = 1
for file in ["foo.csv", "bar.csv"]
    ...
   i += 1
end
files = ["foo.csv", "bar.csv"]
for i in 1:length(files)
   files[i]
end

1 个答案:

答案 0 :(得分:13)

编辑:正如Matt B指出的那样,pairs很简单并且是索引安全的(如果使用OffsetArray,命名为tuple,dictionary等):

for (i, file) in pairs(["foo.csv", "bar.csv"])
    ...
end

一个选项是enumerate

for (i, file) in enumerate(["foo.csv", "bar.csv"])
    ...
end

但是请注意,枚举不一定提供有效的索引,因为它实际上是zip(x, countfrom(1)),并且可能会中断OffsetArray s。

另一个是索引安全的,但要求files是变量:

files = ["foo.csv", "bar.csv"]
for (i, file) in zip(eachindex(files), files)
    ...
end