Kurzform for-loop zum Durchlaufen eines Arrays mit Wert und Index

9

Gibt es eine bequeme / Kurzform, um eine for-Schleife in einem Array zu durchlaufen und sowohl Wert als auch Index abzurufen?

Grundlegende Optionen:

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
Ian
quelle

Antworten:

13

Bearbeiten: Wie Matt B betont, pairsist es einfach und index-sicher (wenn ein OffsetArray, benanntes Tupel, Wörterbuch usw. verwendet wird):

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

Eine Option ist enumerate:

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

Beachten Sie jedoch, dass die Aufzählung nicht unbedingt gültige Indizes liefert, da sie effektiv ist zip(x, countfrom(1))und für OffsetArrays brechen würde .

Eine andere, die index-sicher ist, aber fileseine Variable sein muss:

files = ["foo.csv", "bar.csv"]
for (i, file) in zip(eachindex(files), files)
    ...
end
Ian
quelle
6
noch einfacher : pairs!
Matt B.
Es funktioniert auch für Dinge wie Wörterbücher und benannte Tupel und so weiter.
Matt B.