Python3中列表乘以某一个数
在Python列表操作中:列表乘以某一个数,如list2 = list1 * 2 得到一个新的列表是list1的元素重复n次,且list1不改变。
但运行如下代码时,得到的新列表b中,b[0]和b[1]的地址相同,即对b[0]进行操作,b[1]也会发生改变。
a = [0]
b = [a] * 2
print(b)
b[0].append(1)
print(b)
输出为:
[[0], [0]]
[[0, 1], [0, 1]]
随后尝试以下几种代码:
代码(1)
a = [0]
b = [a for _ in range(2)]
print(b)
b[0].append(1)
print(b)
输出仍为:
[[0], [0]]
[[0, 1], [0, 1]]
代码(2)
a = [0]
b = [list(a) for _ in range(2)]
print(b)
b[0].append(1)
print(b)
输出为:
[[0], [0]]
[[0, 1], [0]]
代码(3)
b = [[] for _ in range(2)]
print(b)
b[0].append(1)
print(b)
输出为:
[[], []]
[[1], []]
本文探讨了Python中列表复制时的引用问题,通过实例演示了直接复制列表会导致元素引用而非值复制,进而解释了如何正确地进行深拷贝来避免此类问题。
2470

被折叠的 条评论
为什么被折叠?



