在测试代码时出现了一些错误——经过数学运算后,列表“缩小”到它自己的最后一项
在 Python 3.3 解释器中它工作正常...
a = [a + b for a, b in zip(a, b)]
我正在使用这段代码添加一些列表项
a = [1, 2, 3]
b = [2, 3, 2]
这工作正常并返回
>>> a
[3, 5, 5]
>>> b
[2, 3, 2]
然后我写了一个类来处理更多列表:
class Vector:
def __init__(self, name = '', vector = []):
self.__name = name
self.__vector = vector
def add_row_to_scalar_multiple(self, vector):
self.__vector = [self.__vector + vector.__vector for self.__vector, vector.__vector in zip(self.__vector, vector.__vector)]
def __str__(self):
vec = ('{0} = {1}'.format(self.__name, self.__vector))
formatted_vec = vec.replace(',', '')
return formatted_vec
当使用与上面相同的列表运行代码时,一个列表被缩减为一个整数
vec_a = Vector('a', [1, 2, 3])
vec_b = Vector('b', [2, 3, 2])
a = [1, 2, 3]
b = [2, 3, 2]
vec_b.add_row_to_scalar_multiple(vec_a)
a = 3
b = [3, 5, 5]
我只是不知道我做错了什么,所以有人可以帮忙吗??
请您参考如下方法:
self.__vector = [self.__vector + vector.__vector for self.__vector, vector.__vector in zip(self.__vector, vector.__vector)]
看到了吗?您在循环中为 self.__vector, vector.__vector 赋值 for self.__vector, vector.__vector in zip(self.__vector, vector.__vector)。
