【问题标题】:Math operations individual elements in 2D Array - Swift数学运算二维数组中的单个元素 - Swift
【发布时间】:2019-08-25 18:00:03
【问题描述】:

我正在尝试对 2D 数组 (testArray) 和 1D 数组 (mod) 的各个元素执行不同的数学运算。我有以下用于生成单个变量的方法,但不知道如何将这些值返回到新的二维数组中。斯威夫特 3.0.2。

let testArray: [[Double]] =
    [[0,100,20.1],
     [1,99,19.2],
     [3,98,18.2],
     [5,97,17.3],
     [7,96,16.4],
     [9,95,15.5]]

let mod: [Double] = [0,5,7,14,20,22]

//Math operations on the two above arrays
for var x in 0..<testArray.count {
    var result1 = Double(testArray[x][0])
    var result2 = Double(testArray[x][1] + mod[x])
    var result3 = Double(testArray[x][2] - mod[x])
    print(result1,result2,result3)
}

//output is as follows:
0.0 100.0 20.1
1.0 104.0 14.2
3.0 105.0 11.2
5.0 111.0 3.3
7.0 116.0 -3.6
9.0 117.0 -6.5

//how do I get the same numbers into a new 2D array as follows:
[[0.0,100.0,20.1],
 [1.0,104.0,14.2],
 [3.0,105.0,11.2],
 [5.0,111.0,3.3],
 [7.0,116.0,-3.6],
 [9.0,117.0,-6.5]]

【问题讨论】:

  • Swift 5 现已推出。你真的需要使用已经过时几年的 Swift 2 吗?
  • 我认为,Swift 2.0 应用无法从应用商店提交。我猜最小值似乎是 3.2。

标签: arrays swift math swift3 operation


【解决方案1】:

你可以使用map:

let result = testArray.indices.map { [ testArray[$0][0], testArray[$0][1] + mod[$0], testArray[$0][2] - mod[$0] ] }

顺便说一句,您的for 块可以写成:

for x in testArray.indices {
    let result1 = testArray[x][0]
    let result2 = testArray[x][1] + mod[x]
    let result3 = testArray[x][2] - mod[x]
    print(result1,result2,result3)
}

【讨论】:

  • 糟糕的是,我正在运行 xcode 8.2.1,它显示 swift 3.0.2。索引工作正常。
  • 我已经尝试了这两种方法,这里显示的简单的一行代码 (t = testArray.indices.map { [ ..........) 和每个 @Kamran 的答案。这个答案既聪明又干净,但似乎使 CPU 陷入了更多困境。运行 20x5 数组,计算机超时并显示代码太复杂的消息。适用于较小的数组。
【解决方案2】:

就这么简单,

var anotherArray: [[Double]] = []
for x in 0..<testArray.count {
    let result1 = Double(testArray[x][0])
    let result2 = Double(testArray[x][1] + mod[x])
    let result3 = Double(testArray[x][2] - mod[x])
    anotherArray.append([result1, result2, result3])
}
print(anotherArray)

【讨论】:

  • 这也有效。与上述解决方案完全相同的输出。
  • 请注意,这是较少占用 CPU 的方法。看起来它比每个@rmaddy 的单行代码解决方案更复杂,但实际上运行得更快。
猜你喜欢
  • 2014-01-20
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多