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

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

6
noch einfacher : pairs!
Matt B.

Es funktioniert auch für Dinge wie Wörterbücher und benannte Tupel und so weiter.
Matt B.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.