理解列表中的变量的初始化

时间:2019-05-15 09:14:31

标签: python

我是python的新手,因此有点迷失了,我尝试通过执行以下操作以更Pythonic的方式创建for循环:

result=[result +coefficient[j]*vector[j]for j in range(c)]     

所以我有一个c系数列表和一个c向量列表,我想像上面的代码一样添加它们的乘积,为此,在for循环中,我将从一个空向量开始并将其加引导其余术语,但是这种方式不起作用。

例如,如果值是以下值:

c=3 
coefficient =[ 1, 2,3] 
Vector=[[3,3,3],[2,2,2],[1,1,1]]

我应该获得:

result=[10,10,10]

5 个答案:

答案 0 :(得分:1)

这里是列表理解的Python方式:

>>> coefficient =[ 1, 2,3] 
>>> vector=[[3,3,3],[2,2,2],[1,1,1]]
>>> 
>>> vxc=[ [c*v_item for v_item in v] for (c,v) in zip(coefficient, vector)]
>>> print(vxc)
[[3, 3, 3], [4, 4, 4], [3, 3, 3]]
>>> 
>>> result=[ sum(x) for x in zip(*vxc) ]
>>> print(result)
[10, 10, 10]

答案 1 :(得分:0)

如果我对您的理解是正确的,那么这应该起作用:

result = [coefficient[j]*vector[j] for j in range(c)]

答案 2 :(得分:0)

尝试

coefficients  = [1,4]
vector = [6,7]

result = [vector[j] * coefficients[j] for j in range(len(vector))]

print(result)

输出

[6, 28]

答案 3 :(得分:0)

这是一个需要两个步骤的答案:

coeff = [1,2,3]
vector = [[3,3,3],[2,2,2],[1,1,1]]

v_times_coeff = [ [coeff[i] * x for x in vector[i]] for i in range(3)]

answer = [ sum([x[i] for x in v_times_coeff ]) for i in range(3)]

答案 4 :(得分:0)

您的操作是矩阵乘法。使用numpy软件包很容易做到这一点:

import numpy as np

a = np.array([1,2,3])
b = np.array([[3, 3, 3], [2, 2, 2], [1, 1, 1]])
result = a @ b 

如果您使用的Python版本<3.5,则必须使用numpy.matmul方法:

result = np.matmul(a, b)