zip()函数接受两个序列,并返回一个元组序列,如下所示:
output[i] = (sequence1[i], sequence2[i])
然而,序列可能具有不同的维度。我的问题是Swift语言如何处理这一点?医生完全没用。在我看来,有两种可能性(在斯威夫特):
nue99wik1#
Swift使用第一个选项,结果序列的长度将等于两个输入中较短的一个。例如:
let a: [Int] = [1, 2, 3] let b: [Int] = [4, 5, 6, 7] let c: [(Int, Int)] = zip(a, b) // [(1, 4), (2, 5), (3, 6)]
qjp7pelc2#
Apple的zip(_:_:)文稿已更新,以回答此问题:https://developer.apple.com/documentation/swift/1541125-zip如果传递给zip(_:_:)的两个序列的长度不同,则生成的序列与较短序列的长度相同。在此示例中,生成的数组与words的长度相同:
zip(_:_:)
words
let words = ["one", "two", "three", "four"] let naturalNumbers = 1...Int.max let zipped = Array(zip(words, naturalNumbers)) // zipped == [("one", 1), ("two", 2), ("three", 3), ("four", 4)]
2条答案
按热度按时间nue99wik1#
Swift使用第一个选项,结果序列的长度将等于两个输入中较短的一个。
例如:
qjp7pelc2#
Apple的
zip(_:_:)
文稿已更新,以回答此问题:https://developer.apple.com/documentation/swift/1541125-zip
如果传递给
zip(_:_:)
的两个序列的长度不同,则生成的序列与较短序列的长度相同。在此示例中,生成的数组与words
的长度相同: