python编程易错题2

a=[1,1,1,1]
b=a
a[0]=2
print(b)

输出结果是[2, 1, 1, 1],而不是[1, 1, 1, 1]

关键点b = a 不是复制列表,而是让 b 和 a 指向同一个列表对象

a 和 b 指向同一个列表,修改 a[0] 实际上修改的是这个共享列表,所以 b 也看到了变化。

如何避免这个问题?

a = [1, 1, 1, 1]
b = a.copy() # 方法1
# 或
b = a[:] # 方法2
# 或
b = list(a) # 方法3

a[0] = 2
print(b) # 输出:[1, 1, 1, 1]

记住:在Python中,b = a 对于可变对象(列表、字典、集合)是引用传递,不是值传递!