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

Ian*_*Ian 9 julia

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

基本选项:

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

Ian*_*Ian 13

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

for (i, file) in pairs(["foo.csv", "bar.csv"])
    ...
end
Run Code Online (Sandbox Code Playgroud)

一种选择是enumerate

for (i, file) in enumerate(["foo.csv", "bar.csv"])
    ...
end
Run Code Online (Sandbox Code Playgroud)

但请注意,枚举不一定提供有效的索引,因为它有效zip(x, countfrom(1))且会破坏OffsetArrays。

另一个是索引安全的,但必须files是一个变量:

files = ["foo.csv", "bar.csv"]
for (i, file) in zip(eachindex(files), files)
    ...
end
Run Code Online (Sandbox Code Playgroud)

  • 甚至更容易:[`pairs]](https://docs.julialang.org/en/v1/base/collections/#Base.pairs)! (6认同)