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


9

是否有便捷/简便的方法来遍历数组上的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

Answers:


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))并且会破坏OffsetArrays。

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

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

6
甚至更容易:pairs
Matt B.19年

它也适用于字典和命名元组之类的东西。
Matt B.19年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.