Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表被转换为整数_Python_List_Python 3.x - Fatal编程技术网

Python列表被转换为整数

Python列表被转换为整数,python,list,python-3.x,Python,List,Python 3.x,在测试代码时,出现了一些错误——在一次数学运算之后,列表“收缩”到它自己的最后一项 在Python3.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 __

在测试代码时,出现了一些错误——在一次数学运算之后,列表“收缩”到它自己的最后一项

在Python3.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赋值。self的循环中的向量。self的向量。zipself中的向量。向量。向量

看到了吗?你正在给self赋值。self的循环中的向量。self的向量。zipself中的向量。向量。向量

您不应该使用a、b作为迭代变量,它们与原始列表不同,这导致您错误地认为它们应该始终与压缩的内容相同

例如,它应该是a=[aa+bb代表aa,zipa中的bb,b]

然后在将其转换为类时,您会看到,而不是:

你应该有这个:

此外,您的函数可能应该被称为_iadd uuuu,但这并不是重点

另一方面:

这条线有两个问题。首先,它只是存储一个对传递的列表的引用,而该列表可能不是您想要的。更大的问题是,默认的vector=[]参数每次都是相同的列表。除非您知道自己在做什么,否则应该避免使用默认值的可变类型。我建议self.uuu vector=listvector

您不应该使用a、b作为迭代变量,它们与原始列表不同,这导致您错误地认为它们应该始终与压缩的内容相同

例如,它应该是a=[aa+bb代表aa,zipa中的bb,b]

然后在将其转换为类时,您会看到,而不是:

你应该有这个:

此外,您的函数可能应该被称为_iadd uuuu,但这并不是重点

另一方面:


这条线有两个问题。首先,它只是存储一个对传递的列表的引用,而该列表可能不是您想要的。更大的问题是,默认的vector=[]参数每次都是相同的列表。除非您知道自己在做什么,否则应该避免使用默认值的可变类型。我建议self.\uuu vector=listvector.

这不是你的问题,但是你的uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。一个就足够了。要扩展@Wooble所说的内容,您应该将uuu init_uuuu定义中的vector=[]更改为vector=None,如果vector为None,则使用:vector=[]。这将消除前面提到的头痛问题,我保证如果你不这样做,你会感到头痛。这不是你的问题,但是你的uu init_uu有一个可变的默认参数,这将在以后引起你的头痛。a变为3,因为你正在给它赋值。对于self.u vector,向量。什么向量?属性不需要两个前导下划线。一个就足够了。要扩展@Wooble所说的内容,您应该将uuu init_uuuu定义中的vector=[]更改为vector=None,如果vector为None,则使用:vector=[]。这将消除前面提到的头痛问题,我保证如果你不这样做,你会感到头痛。那么在语句中多次使用self.\uuuu vector,vector.\uuuu vector会导致问题?那么在语句中多次使用self.\uu vector,vector.\uu vector会导致问题吗?
a = [a + b for a, b in zip(a, b)]
self.__vector = [self.__vector + vector.__vector
                 for self.__vector, vector.__vector
                 in zip(self.__vector, vector.__vector)]
self.__vector = [aa + bb
                 for aa, bb
                 in zip(self.__vector, vector.__vector)]
   self.__vector = vector