Değer ve dizin içeren bir dizi üzerinden yineleme yapmak için kısayol for döngüsü


9

Değer ve dizin elde ederek, bir dizideki for döngüsü üzerinden yineleme yapmak için uygun / kısa yol var mı?

Temel seçenekler:

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

Yanıtlar:


13

Düzenleme: Matt B'nin işaret ettiği gibi pairs, basit ve dizin güvenlidir (bir OffsetArrayadlandırılmış grup, sözlük vb. Kullanılıyorsa):

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

Bir seçenek enumerate:

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

ancak numaralandırmanın mutlaka geçerli endeksler sağlamadığını unutmayın, çünkü etkili zip(x, countfrom(1))ve OffsetArrays için kırılacaktır .

Dizin için güvenli olan ancak filesdeğişken olması gereken bir başkası :

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

6
daha da kolay: pairs!
Matt B.

aynı zamanda sözlükler ve adlandırılmış tuples gibi şeyler için de çalışır.
Matt B.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.