python_lily 发表于 2022-5-31 23:13:54

列表问题,求助

为什么结果是[, , , ], 不应该是[, , , ] 吗?

suchocolate 发表于 2022-5-31 23:50:05

*不造新对象

森亦简 发表于 2022-6-1 00:14:41

res = [*1]*4
res
[, , , ]
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
[, , , ]
看不懂,埋个坑
是因为一开始就这设定了这四个元素是重复的原因吗

Twilight6 发表于 2022-6-1 00:17:46



* 号在对列表使用时表示重复,元素地址是一致,导致赋值第一位就改变所有元素的值

临时号 发表于 2022-6-1 00:31:20

在python中,所有的都是对象
而你现在使用*将res(n表示任何数)所管理的对象设置为同一个None(注意:res是对象的管理者,不是所有者)
当你再用res = 1方式去修改它所管理的对象时,其它该对象的管理者也会被设置为已被修改的对象1,而不是None
但如果你创建了三个不同的None对象,如:
res = [,,]
那么再设置时,就会出现下面的执行情况,因为a管理的是不同的对象
>>> res = 1
>>> res
[,,]
页: [1]
查看完整版本: 列表问题,求助