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


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.