是否有一个函数,我可以使用迭代数组,并有索引和元素,像Python的枚举?

for index, element in enumerate(list):
    ...

当前回答

基本枚举

for (index, element) in arrayOfValues.enumerate() {
// do something useful
}

或者用Swift 3…

for (index, element) in arrayOfValues.enumerated() {
// do something useful
}

枚举,过滤和映射

但是,我最常将enumerate与map或filter结合使用。例如,在一对数组上操作。

在这个数组中,我想过滤奇数或偶数索引元素,并将它们从整型转换为双精度。所以enumerate()得到索引和元素,然后filter检查索引,最后为了去掉结果元组,我将它映射到元素。

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)
                        })

其他回答

我们调用枚举函数来实现这个。就像

    for (index, element) in array.enumerate() {
     index is indexposition of array
     element is element of array 
   }

对于你想要做的事情,你应该在你的数组上使用枚举()方法:

for (index, element) in list.enumerated() {
    print("\(index) - \(element)")
}

在函数式编程中像这样使用. enumeration ():

list.enumerated().forEach { print($0.offset, $0.element) } 

是的。从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)")
}

如果你出于某种原因想要一个更传统的查找循环,通过索引访问数组中的元素:

let xs = ["A", "B", "C", "D"]

for i in 0 ..< xs.count {
    print("\(i) - \(xs[i])")
}

输出:

0 - A
1 - B
2 - C
3 - D