จดชวเลขสำหรับลูปเพื่อวนซ้ำผ่านอาร์เรย์ที่มีทั้งค่าและดัชนี


9

มีวิธีที่สะดวก / การจดชวเลขเพื่อวนซ้ำสำหรับลูปในอาร์เรย์โดยรับทั้งค่าและดัชนีหรือไม่

ตัวเลือกพื้นฐาน:

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ชื่อ tuple, พจนานุกรม ฯลฯ ):

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))และอาจทำลายOffsetArrayได้

สิ่งที่ปลอดภัยสำหรับดัชนี แต่ต้อง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.