zip参数#1必须支持迭代

时间:2013-08-21 01:49:18

标签: python-2.7

我想做简单的列表乘法。它适用于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)])

1 个答案:

答案 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的第二次使用时失败。

您可以使用mapoperator.mul

from operator import mul
c = sum(map(mul, x, a))
d = sum(map(mul, x, b))