列表问题,求助
为什么结果是[, , , ], 不应该是[, , , ] 吗? *不造新对象 res = [*1]*4res
[, , , ]
res = 1
res
[, , , ]
res = 2
res
[, , , ]
res = 1
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
res = 1
IndexError: list assignment index out of range
res = 1
res
[, , , ]
看不懂,埋个坑
是因为一开始就这设定了这四个元素是重复的原因吗
* 号在对列表使用时表示重复,元素地址是一致,导致赋值第一位就改变所有元素的值
在python中,所有的都是对象
而你现在使用*将res(n表示任何数)所管理的对象设置为同一个None(注意:res是对象的管理者,不是所有者)
当你再用res = 1方式去修改它所管理的对象时,其它该对象的管理者也会被设置为已被修改的对象1,而不是None
但如果你创建了三个不同的None对象,如:
res = [,,]
那么再设置时,就会出现下面的执行情况,因为a管理的是不同的对象
>>> res = 1
>>> res
[,,]
页:
[1]