Boucle raccourcie pour parcourir un tableau avec à la fois une valeur et un index


9

Existe-t-il un moyen pratique / abrégé d'itérer dans une boucle for sur un tableau, en obtenant à la fois la valeur et l'index?

Options de base:

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

Réponses:


13

Edit: Comme le souligne Matt B, pairsest simple et sûr pour l'index (si vous utilisez un OffsetArraytuple nommé, un dictionnaire, etc.):

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

Une option est enumerate:

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

mais notez que énumérer ne fournit pas nécessairement des indices valides, car il est efficace zip(x, countfrom(1))et romprait pour OffsetArrays.

Un autre index-safe, mais qui doit filesêtre une variable:

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

6
encore plus facile pairs:!
Matt B.

il fonctionne également pour des choses comme les dictionnaires et les tuples nommés et autres.
Matt B.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.