用函数修改列表出现问题

帮我看下代码,哪里出了问题,
我要求用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()
列表是可变值类型,它们指向了同一个引用,改一个就都改了

上图

img

代码

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]