gpt4 book ai didi

arrays - Swift - 将数组的每个元素乘以 2

转载 作者:行者123 更新时间:2023-11-28 10:13:45 24 4
gpt4 key购买 nike

我想将代码的每个元素乘以 2。这是我的代码:

var arr = [5, 77, 34, -22]

for x in arr {

arr[arr.index(of: x)!] = x * 2

}

print(arr)

这将在控制台上打印以下内容:

[10, 154, 68, -44]

当我将 1 添加到数组时,我有以下代码:

var arr = [5, 77, 34, -22, 1]

for x in arr {

arr[arr.index(of: x)!] = x * 2

}

print(arr)

正如预期的那样,结果如下:

[10, 154, 68, -44, 2]

但是,当我使用以下代码将 2 添加到数组时:

var arr = [5, 77, 34, -22, 1, 2]

for x in arr {

arr[arr.index(of: x)!] = x * 2

}

print(arr)

我得到了一个奇怪的结果:

[10, 154, 68, -44, 4, 2]

为什么会这样?我使用 Playground 来获得所有这些结果。任何解释将不胜感激,提前致谢。

最佳答案

首先上面的乘法元素不是一个好主意。

为什么?

因为如果数字重复,您将对最先出现的元素应用乘法运算。

 var arr = [1, 2] // result will be [4, 2] 

// This not expected, you need
[2, 4]

这就是您的情况。这是每次迭代的数组标准输出

[5, 77, 34, -22, 1, 2]
[10, 77, 34, -22, 1, 2]
[10, 154, 34, -22, 1, 2]
[10, 154, 68, -22, 1, 2]
[10, 154, 68, -44, 1, 2]
[10, 154, 68, -44, 2, 2]
[10, 154, 68, -44, 4, 2]

在数组的倒数第二个状态中,您可以看到您有两个连续的 2,当您调用 index: of 时,它会返回第一个元素的索引按顺序查找。

更好的方法是使用 enumrationmap

  for (index, value) in arr.enumerated() {
arr[index] = value * 2
}

// or
let array = arr.map {$0 * 2}

关于arrays - Swift - 将数组的每个元素乘以 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44175113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com