帮我看下代码,哪里出了问题,
我要求用change()函数将原来的列表修改后,打印原列表和新列表,
但实际情况是打印了两份新列表
def change(aa):
bb = aa
aa[0] = 99
print(f"原列表是{bb}")
print(f"新列表是{aa}")
list_a = [11, 22]
change(list_a)
# 实际输出:原列表是[99, 22] 新列表是[99, 22]
# 我要求的输出:原列表是[11, 22] 新列表是[99, 22]
bb = aa
改为
bb = aa[:]
或者
bb = aa.copy()
列表是可变值类型,它们指向了同一个引用,改一个就都改了
上图
代码
def change(aa):
bb = aa[:] # 使用切片来复制一个新的列表对象
# 或者 bb = aa.copy() # 使用copy方法来复制一个新的列表对象
aa[0] = 99
print(f"原列表是{bb}")
print(f"新列表是{aa}")
list_a = [11, 22]
change(list_a)
# 输出:原列表是[11, 22] 新列表是[99, 22]