You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何从Double数组创建连续相邻元素的元组数组?

一行代码实现相邻元素元组数组转换

嘿,这个需求真的可以用一行代码搞定!你之前尝试map没成功是因为map只能逐个处理单个元素,没法同时拿到当前元素和它的下一个元素,而zip正好是解决这类配对问题的利器。

直接上解决方案:

let tupleArray = Array(zip(doubleArray, doubleArray.dropFirst()))

原理解释:

  • doubleArray.dropFirst()会生成一个原数组去掉第一个元素的切片(比如原数组是[a,b,c,d],这个切片就是[b,c,d])
  • zip(_:_:)函数会把两个序列对应位置的元素配对成元组,这里原数组和切片配对,正好得到(a,b)、(b,c)、(c,d)这样的元组序列
  • 最后用Array()把这个序列转换成数组,就得到了你想要的[(Double, Double)]类型结果

举个实际例子:

如果你的原数组是:

let doubleArray = [1.0, 2.5, 3.7, 4.2]

运行上面的代码后,tupleArray的值就是:

[(1.0, 2.5), (2.5, 3.7), (3.7, 4.2)]

之前你写的let tupleArray = doubleArray.map { ($0, $1) }会报错,因为map的闭包参数只有当前元素$0,不存在$1这个参数,所以没法直接这么写。而用zip配合dropFirst()就完美解决了相邻元素配对的问题😉

内容的提问来源于stack exchange,提问作者user7219266

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:47:43