swift从像数组[0 ..< 10]这样的数组中获取数组

时间:2015-03-03 20:45:41

标签: arrays swift filtering

我想从数组中获取一系列对象。像这样:

var array = [1,3,9,6,3,4,7,4,9]
var newArray = array[1...3] //[3,9,6]

以上将访问索引1到3的元素。

还有:

newArray = array[1,5,3] // [3,4,6] would be cool 

这将分别从索引1,5和3中检索元素。

2 个答案:

答案 0 :(得分:1)

最后一个例子可以使用PermutationGenerator

来实现
let array = [1,3,9,6,3,4,7,4,9]
let perms = PermutationGenerator(elements: array, indices: [1,5,3])
// perms is now a sequence of the values in array at indices 1, 5 and 3:
for x in perms {
    // iterate over x = 3, 4 and 6
}

如果你真的需要一个数组(只是序列可能足够你的目的),你可以将它传递给Array的init方法,该方法采用一个序列:

let newArray = Array(perms)
// newArray is now [3, 4, 6]

对于您的第一个示例 - 使用数组,它将按原样运行。但它从你的评论中看起来就像你用字符串一样尝试它。 Swift中的字符串不是随机访问的(出于与unicode相关的原因)。因此,您不能使用整数,它们具有特定于字符串的双向索引类型:

let s = "Hello, I must be going"
if let i = find(s, "I") {
    // prints "I must be going"
    println(s[i..<s.endIndex])
}

答案 1 :(得分:0)

这有效:

var n = 4
var newArray = array[0..<n]

Slicing Arrays in Swift 的任何情况下,你都可以在Swift中找到一个非常好的Python切片示例。