मूल्य और सूचकांक दोनों के साथ सरणी के माध्यम से पुनरावृति करने के लिए शॉर्टहैंड


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

संपादित करें: जैसा कि मैट बी बताते हैं, pairsसरल और सूचकांक-सुरक्षित है (यदि एक का उपयोग करके OffsetArray, टपल, शब्दकोश आदि):

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:!
मैट बी।

यह शब्दकोशों और नामित ट्यूपल्स और जैसी चीजों के लिए भी काम करता है।
मैट बी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.