在python个别乘法列表值与循环?

时间:2018-04-22 12:23:12

标签: python

如果我有一个列表data_x = [1,2,3,4],如何将data_x的每个元素与另一个列表data_y = [2,3,4,5]的每个元素相乘并对这些值求和?

答案应该是1*2 +2*3 +3*4+ 4*5 = 40。我正在寻找某种for循环。

4 个答案:

答案 0 :(得分:1)

使用zip在两个列表之间执行索引操作:

sum([x * y for x, y in zip(data_x, data_y)])

使用numpy.multiplynumpy.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)]