arrays - लूप के लिए तेज़: सूचकांक के लिए, सरणी में तत्व?
swift (6)
क्या कोई ऐसा फ़ंक्शन है जिसका उपयोग मैं किसी सरणी पर पुनरावृत्त करने के लिए कर सकता हूं और इसमें इंडेक्स और तत्व दोनों हैं, जैसे कि पाइथन की गणना?
for index, element in enumerate(list):
...
मूल गणना
for (index, element) in arrayOfValues.enumerate() {
// do something useful
}
या स्विफ्ट 3 के साथ ...
for (index, element) in arrayOfValues.enumerated() {
// do something useful
}
गणना, फ़िल्टर और मानचित्र
हालांकि, मैं अक्सर मानचित्र या फ़िल्टर के साथ संयोजन में गणना का उपयोग करता हूं। उदाहरण के लिए कुछ सरणी पर परिचालन के साथ।
इस सरणी में मैं अजीब या यहां तक कि अनुक्रमित तत्वों को फ़िल्टर करना चाहता था और उन्हें इट्स से डबल्स में परिवर्तित करना चाहता था। तो enumerate()
आपको इंडेक्स और तत्व प्राप्त करता है, फिर फ़िल्टर इंडेक्स को चेक करता है, और आखिरकार परिणामस्वरूप ट्यूपल से छुटकारा पाने के लिए मैं इसे केवल तत्व के लिए मैप करता हूं।
let evens = arrayOfValues.enumerate().filter({
(index: Int, element: Int) -> Bool in
return index % 2 == 0
}).map({ (_: Int, element: Int) -> Double in
return Double(element)
})
let odds = arrayOfValues.enumerate().filter({
(index: Int, element: Int) -> Bool in
return index % 2 != 0
}).map({ (_: Int, element: Int) -> Double in
return Double(element)
})
एक्सकोड 8 और स्विफ्ट 3: tempArray.enumerate () का उपयोग करके ऐरे का आकलन किया जा सकता है
उदाहरण:
var someStrs = [String]()
someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]
for (index, item) in someStrs.enumerated()
{
print("Value at index = \(index) is \(item)").
}
कंसोल:
Value at index = 0 is Apple
Value at index = 1 is Amazon
Value at index = 2 is Google
यह गणना के लूप का सूत्र है:
for (index, value) in shoppingList.enumerate() {
print("Item \(index + 1): \(value)")
}
अधिक जानकारी के लिए आप Here देख सकते हैं।
स्विफ्ट 2 से शुरू होने पर, संग्रह पर फ़ंक्शन को कॉल करने की आवश्यकता है:
for (index, element) in list.enumerate() {
print("Item \(index): \(element)")
}
स्विफ्ट 3 से शुरू, यह है
for (index, element) in list.enumerated() {
print("Item \(index): \(element)")
}
हाँ। स्विफ्ट 3.0 के रूप में, यदि आपको प्रत्येक तत्व के लिए इसके मूल्य के साथ इंडेक्स की आवश्यकता है, तो आप सरणी पर पुनरावृत्त करने के लिए enumerated()
विधि का उपयोग कर सकते हैं। यह इंडेक्स से बना जोड़े और सरणी में प्रत्येक आइटम के लिए मान का एक अनुक्रम देता है। उदाहरण के लिए:
for (index, element) in list.enumerated() {
print("Item \(index): \(element)")
}
स्विफ्ट 3.0 से पहले और स्विफ्ट 2.0 के बाद, फ़ंक्शन को enumerate()
कहा गया था:
for (index, element) in list.enumerate() {
print("Item \(index): \(element)")
}
स्विफ्ट 2.0 से पहले, enumerate
वैश्विक कार्य था।
for (index, element) in enumerate(list) {
println("Item \(index): \(element)")
}