转圈圈:创建二维列表的疑惑?
size = 3# 方法1
array = [*size]*size
j = 0;k = 0
array = 1
print(array)
# 结果[, , ]
# 方法2
array = [*size]
for i in range(size-1):
array += [*size]
array = 1
print(array)
# 结果[, , ]
为什么得出的列表不一致,方法1和方法2的不同点? 方法一是复制
复制出来的列表实际上指向同一列表
他们的id是相同的
因为id相同的缘故,你改变任何一个列表,另外两个列表也会同时改变
>>> id(array)
1753224
>>> id(array)
1753224
>>> id(array)
1753224
第二种方法,是在内存中生成一个[*size],加入到原列表中
每次生成的列表,都指向新的id
这时候,你改变任何一个列表,都与其他列表没有关系
>>> a = [*size]
>>> b = [*size]
>>> id(a)
51688008
>>> id(b)
12588872 print(id(array),id(array))
# 方法1:1437756480 1437756480 地址竟然一样
# 方法2:1437756480 1437756448
页:
[1]