我想做简单的列表乘法。它适用于c,但对于d有以下错误失败:TypeError:zip参数#1必须支持迭代
任何纠正它的建议都会很有意义。
x=[]
area1 = (area1)/100
area2 = (area2)/100
area3 = (area3)/100
x.append(area1)
x.append(area2)
x.append(area3)
# resultant x is [0.96, 0.03, 0.0]
a = [13.87, 14.78, 10.3]
b = [0.44, 0.39, 0.38]
c = sum([x* a for x, a in zip(x, a)])
d = sum([x* b for x, b in zip(x, b)])
答案 0 :(得分:1)
您必须在列表推导中使用x,a和b以外的名称:
c = sum([_x * _a for _x, _a in zip(x, a)])
d = sum([_x * _b for _x, _b in zip(x, b)])
你们正在重新分配x作为x的第一个元素,并且在zip
与x的第二次使用时失败。
您可以使用map
和operator.mul
:
from operator import mul
c = sum(map(mul, x, a))
d = sum(map(mul, x, b))