为什么“ a = a + a”不是循环结构,而“ a.append(a)”是循环结构?

时间:2019-01-22 05:38:36

标签: python python-3.x

a = [1,2,3]
a = a + [a]
Print(a)
>>> [1,2,3,1,2,3]

a = [1,2,3]
a.append[a]
Print (a)
>>>[1,2,3,[...]]

2 个答案:

答案 0 :(得分:1)

由于[a]创建了另一个列表并将其添加到列表中,但是a.append(a)将相同的列表附加到自身列表中,并且该列表是循环的,请查看示例:

In [19]: id(a)
Out[19]: 139994593696008

In [20]: id([a])
Out[20]: 139994605200520

答案 1 :(得分:1)

因为+创建了一个新对象,而append只是附加到原始对象上。如果将列表附加到其自身,则存在一个循环。

>>> a = [12]
>>> id(a)
4337923136
>>> a = a + [a]
>>> id(a)
4338091360
>>> a
[12, [12]]
>>> a.append(a)
>>> id(a)
4338091360
>>> a
[12, [12], [...]]
>>>