对两个数组的每个元素求和

时间:2019-06-05 09:22:33

标签: python arrays algorithm logic

我有两个数组,想对两个数组的每个元素求和并找到最大和。 我已经这样编程了:

sum = []
for element in arrayOne:
    sum.append(max([item + element for item in arrayTwo]))
print max(sum)

有没有更好的方法来实现这一目标?

4 个答案:

答案 0 :(得分:3)

您可以使用numpy。

import numpy as np

a = np.array(arrayOne)
b = np.array(arrayTwo)
max = max(a + b)
print(max)

答案 1 :(得分:2)

itertools.productmax一起使用:

from itertools import product
print(max(sum(x) for x in product(arrayOne, arrayTwo)))

或使用地图:

print(max(map(sum,product(arrayOne, arrayTwo))))

答案 2 :(得分:2)

max_sum = max(map(sum, zip(arrayOne, arrayTwo)))

已更新。 如果您需要数组中所有元素之和的最大值:

max_sum = max(sum(arrayOne), sum(arrayTwo))

如果arrayOnearrayTwo是嵌套列表([[1, 2], [3, 3], [3, 5], [4, 9]]),则需要查找具有最大和的元素:

max_sum = max(map(sum, arrayOne + arrayTwo))

P。 S。 下一次,请提供输入和输出示例,以免让我们猜测您需要什么。

答案 3 :(得分:1)

要分别找到两个长度分别为 n m 的数组的所有元素的所有成对总和,

max(arrayOne) + max(arrayTwo)

O(max(n,m)) 中表现最差的是 O(n * m) (当浏览所有组合时)。

但是,如果出于某种原因有必要遍历所有对,则解决方案可能是

max(foo(one, two) for one in arrayOne for two in arrayTwo)

其中foo可以是输出数字的两个数字参数的任何函数(或实现ordering的任何类的对象)。

顺便说一句,请避免在代码中像sum那样重新定义built-ins