是否有一个函数,我可以使用迭代数组,并有索引和元素,像Python的枚举?
for index, element in enumerate(list):
...
是否有一个函数,我可以使用迭代数组,并有索引和元素,像Python的枚举?
for index, element in enumerate(list):
...
当前回答
我们调用枚举函数来实现这个。就像
for (index, element) in array.enumerate() {
index is indexposition of array
element is element of array
}
其他回答
使用.enumerate()可以,但它不能提供元素的真实索引;它只为每个连续的元素提供一个以0开始并加1的Int值。这通常是无关紧要的,但是当与ArraySlice类型一起使用时,可能会出现意想不到的行为。取以下代码:
let a = ["a", "b", "c", "d", "e"]
a.indices //=> 0..<5
let aSlice = a[1..<4] //=> ArraySlice with ["b", "c", "d"]
aSlice.indices //=> 1..<4
var test = [Int: String]()
for (index, element) in aSlice.enumerate() {
test[index] = element
}
test //=> [0: "b", 1: "c", 2: "d"] // indices presented as 0..<3, but they are actually 1..<4
test[0] == aSlice[0] // ERROR: out of bounds
这是一个有点做作的例子,在实践中也不是一个常见的问题,但我仍然认为值得知道这是可能发生的。
是的。从Swift 3.0开始,如果需要每个元素的索引及其值,可以使用enumeration()方法遍历数组。它返回一个由索引和数组中每个项的值组成的对序列。例如:
for (index, element) in list.enumerated() {
print("Item \(index): \(element)")
}
在Swift 3.0之前和Swift 2.0之后,函数被称为enumerate():
for (index, element) in list.enumerate() {
print("Item \(index): \(element)")
}
在Swift 2.0之前,enumerate是一个全局函数。
for (index, element) in enumerate(list) {
println("Item \(index): \(element)")
}
你可以简单地使用循环枚举来得到你想要的结果:
斯威夫特2:
for (index, element) in elements.enumerate() {
print("\(index): \(element)")
}
Swift 3和4:
for (index, element) in elements.enumerated() {
print("\(index): \(element)")
}
或者你可以简单地执行一个for循环来得到相同的结果:
for index in 0..<elements.count {
let element = elements[index]
print("\(index): \(element)")
}
希望能有所帮助。
Xcode 8和Swift 3: 可以使用temparray . enumeration()枚举数组。
例子:
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
斯威夫特5. x:
Let list = [0,1,2,3,4,5]
list.enumerated().forEach { (index, value) in
print("index: \(index), value: \(value)")
}
Or,
list.enumerated().forEach {
print("index: \($0.offset), value: \($0.element)")
}
Or,
for (index, value) in list.enumerated() {
print("index: \(index), value: \(value)")
}