Python - vector TypeError:zip参数#1必须支持迭代

时间:2015-10-04 17:41:59

标签: python vector typeerror

我对python很新,并试图遵循有关向量的教程

我有以下代码:

def vector_add(v, w):
    return [v_i + w_i for v_i, w_i in zip(v, w)]

def vector_subtract(v, w):
    return [v_i - w_i for v_i, w_i in zip(v, w)]

def vector_sum(vectors):
    return reduce(vector_add, vectors)  

def scalar_multiply(c, v):
    #c is a line v is a vector
    return [c * v_i for v_i in v]

def vector_mean(vectors):
    #compute the vectors whose ith element is the mean of the ith elements of the input vectors
    n = len(vectors)
    return scalar_multiply(1/n, vector_sum(vectors))
vector_mean([1,2,3,4])

我收到以下错误:

Traceback (most recent call last):
  File "vectors.py", line 21, in <module>
    vector_mean([1,2,3,4])
  File "vectors.py", line 20, in vector_mean
    return scalar_multiply(1/n, vector_sum(vectors))
  File "vectors.py", line 11, in vector_sum
    return reduce(vector_add, vectors)  
  File "vectors.py", line 5, in vector_add
    return [v_i + w_i for v_i, w_i in zip(v, w)]
TypeError: zip argument #1 must support iteration

我猜这是因为我传了一个整数或者其他东西,但我不确定? 任何关于为什么会发生这种情况以及如何解决此错误的帮助将非常感激。 谢谢, 斯科特

1 个答案:

答案 0 :(得分:0)

print vector_mean([[1,2,3,4], [22,23,34,44]])

并将该字符串修复为:

scalar_multiply(1/float(n), vector_sum(vectors))

(强制分裂为浮动):

相关问题