caeser 发表于 2022-3-9 13:02:08

为什么相同的赋值,结果却不同?

>>> x = [, , ]
>>> x = 0
>>> x
[, , ]


>>> array = [*3]*3
>>> array
[, , ]
>>> array = 1
>>> array
[, , ]

为什么 x = 0的结果是[, , ]
而      array = 1的结果是 [, , ]?

isdkz 发表于 2022-3-9 13:09:53

array = [*3]*3 这种方式来赋值其实乘以3的是列表的地址,

而不会新建列表对象,所以里面的3个列表其实是指向同一个列表的,

所以其中一个发生改变另外两个也就跟着变了,

你可以把 array = [*3]*3 改成 array = [*3 for i in range(3)]

elven08 发表于 2022-3-9 13:13:13

你看到的是假象,array = [*3]*3这样赋值只是看起来一样,实际上他们都指向同一个地址。
页: [1]
查看完整版本: 为什么相同的赋值,结果却不同?