如果我有一个列表data_x = [1,2,3,4]
,如何将data_x
的每个元素与另一个列表data_y = [2,3,4,5]
的每个元素相乘并对这些值求和?
答案应该是1*2 +2*3 +3*4+ 4*5 = 40
。我正在寻找某种for
循环。
答案 0 :(得分:1)
使用zip
在两个列表之间执行索引操作:
sum([x * y for x, y in zip(data_x, data_y)])
使用numpy.multiply
和numpy.sum
的<{1}}解决方案:
numpy
答案 1 :(得分:0)
尝试这个(使用for循环,根据OP的要求):
answer = 0
for i in range(len(data_x)):
answer += (data_x[i] * data_y[i])
另一种(更快)方式(使用list
理解):
answer = sum([x*y for x in zip(data_x, data_y)])
## Use zip to perform index-wise operations between two lists
## zip returns a list of tuples, with each tuple at index i containing the elements of data_x[i] and data_y[i]
你也可以尝试这个(如果你安装了numpy
):
np.multiply(data_x, data_y).sum()
答案 2 :(得分:0)
您可以使用zip
执行此操作。
{{1}}
答案 3 :(得分:0)
使用此
result = sum([x * y for x, y in zip(data_x, data_y)])
result = zip(data_x, data_y)
创建元组的zip对象,其中每个元组result[i]
对应于值data_x[i]
和data_y[i]
那就是
data_x = [1, 2, 3, 4]
data_y = [2, 3, 4, 5]
然后,
result = [(1, 2), (2, 3), (3, 4), (4, 5)]