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

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

当前回答

斯威夫特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)")
}

其他回答

从Swift 2开始,需要对集合调用enumerate函数,如下所示:

for (index, element) in list.enumerate() {
    print("Item \(index): \(element)")
}

我在寻找一种使用Dictionary的方法时找到了这个答案,结果证明它很容易适应,只需为元素传递一个元组。

// Swift 2

var list = ["a": 1, "b": 2]

for (index, (letter, value)) in list.enumerate() {
    print("Item \(index): \(letter) \(value)")
}

对于那些想使用forEach的人。

斯威夫特4

extension Array {
  func forEachWithIndex(_ body: (Int, Element) throws -> Void) rethrows {
    try zip((startIndex ..< endIndex), self).forEach(body)
  }
}

Or

array.enumerated().forEach { ... }

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

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

从Swift 3开始,的确如此

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