값과 인덱스가 모두있는 배열을 반복하는 속기 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

답변:


13

편집 : Matt B가 지적했듯이 pairs간단하고 인덱스 안전합니다 ( OffsetArray, 튜플, 사전 등을 사용하는 경우 ).

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.

또한 사전 및 명명 된 튜플과 같은 것들에도 적용됩니다.
Matt B.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.