在Swift中是否有一种快速生成一个包含一定范围内数值的数组的方法?

54
在Python中,我可以生成一个值的数组。
示例:
arr = range(0,30) 

有没有办法在Swift中立即生成一个填充了一系列值的数组?

4个回答

95
你可以像这样使用范围创建一个数组:
var values = Array(0...100)

这将为您提供一个数组[0, ..., 100]


28
你可以创建一个范围并将其映射到一个数组中:
var array = (0...30).map { $0 }
map闭包只是返回范围元素,生成的数组中的元素都是范围内的整数。当然也可以生成不同的元素和类型,如下所示:
var array = (0...30).map { "Index\($0)" }

生成一个字符串数组,其中包含Index0Index1等。


18

你可以使用这个方法创建包含相同值的数组

let array = Array(repeating: 5, count: 10)

如果你想要根据范围创建一个数组,可以像这样实现

let array = [Int](1...10)

在这种情况下,您将获得一个包含从1到10的整数值的数组


1
在Swift 3中,我使用此语法会出现错误。有什么改变了吗? - boehmatron
6
Swift 4语法:let array = Array(repeating: 10, count: 5)翻译:使用Swift 4语法创建一个包含5个元素,每个元素都为10的数组:let array = Array(repeating: 10, count: 5)。 - Gene Z. Ragan
在Swift 4.2中,您可以使用以下代码创建一个包含5个重复元素为10的数组:let array = Array(repeatElement(10, count: 5))。 - Max

12

创建一个从0到N-1的整数数组。

var arr = [Int](0..<N)

从0到N-1创建一个浮点数数组

var arr = (0..<N).map{ Float($0) }

创建一个包括2π在内、以0.1为步长的0到2π的浮点数数组。

var arr:[Float] = stride(from: 0.0, to: .pi * 2 + 0.1, by: 0.1).map{$0}
or
var arr:[Float] = Array(stride(from: 0.0, to: .pi * 2 + 0.1, by: 0.1))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接