arrays - 有没有一种简单的方法来计算两个数组之间的差异

标签 arrays swift

<分区>

我正在尝试计算 Swift 中两个数组中的值之间的差异。我想减去两个数组之间每个索引处的值。

我尝试执行以下操作:

var array1 : [Double] = [1, 2, 3, 4, 5]
var array2 : [Double] = [2, 3, 4, 5, 6]

var result = array2 - array1

预期答案:

result = [1, 1, 1, 1, 1]

我收到以下错误消息:

Binary operator '-' cannot be applied to two '[Double]' operands

以下有效:

var array1 : [Double] = [1, 2, 3, 4, 5]
var array2 : [Double] = [2, 3, 4, 5, 6]

let velocity = (0..<5).map { array2[$0] - array1[$0] }
print(velocity)

我想了解是否有一种有效的方法来完成此任务。

最佳答案

您的尝试效果很好。通常,您需要检查哪个数组的元素较少(以防万一):

(0..<(min(array1.count, array2.count))).map { array2[$0] - array1[$0] }

或者,正如 Connor 在他们的回答中提到的那样,使用 zip,它会为您处理数组长度的比较。

zip(lhs, rhs).map { $0.0 - $0.1 }

您可以更进一步,重载 - 运算符以获得您想要的语法 (array1 - array2):

func -<T: Numeric>(lhs: [T], rhs: [T]) -> [T] {
    return zip(lhs, rhs).map(-)
}

// usage:
print([1,2,3] - [0, 1, 2])

但请注意,对于其他人来说,可能不太清楚一个数组“减去”另一个数组的含义。

关于arrays - 有没有一种简单的方法来计算两个数组之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56530062/

相关文章:

c - 动态分配指针数组

php - 合并两个不同长度的数组,key 和 0 填充为空

swift - iOS 13 模拟器 : reverseGeocodeLocation - [GEOAddressObject] [NSLocale currentLocale] failed for NSLocaleCountryCode@

ios - UIAlertController addAction 不起作用

c++ - 如果它是成员函数,如何声明字符串数组的大小

javascript - ArrayList 奇怪的问题

c# - 从文件中读取一个 int 返回 ASCII

ios - 快速扫描存储在 Xcode 项目中的目录内容

ios - 触摸屏幕时如何在 Swift 中关闭键盘

swift - Xcode 7-CocoaPod AlamoFire 及其他,导入到项目中但不在项目内部工作