关于python list 复制的问题!

问题遇到的现象和发生背景

为什么没有结果输出?

问题相关代码,请勿粘贴截图

def make_great(magicians):
great_magicians = []

while magicians:
    magician = magicians.pop()
    great_magician = magician + " the Great"
    great_magicians.append(great_magician)

magicians = great_magicians[:]

m = ['lucifer', 'lily', 'teena']
make_great(m)
print(m)

运行结果及报错内容

[]

我的解答思路和尝试过的方法

当把magicians = great_magicians[:] 替换为:
for great_magician in great_magicians:
magicians.append(great_magician) 后
能正常输出为函数修改数据后的结果,

我想要达到的结果

比较以下两段代码,第10行的赋值运算,在赋值前后它们的id不同了。相当于重新声明了一个变量,只是同名

def make_great(magicians):
    great_magicians = []

    while magicians:
        magician = magicians.pop()
        great_magician = magician + " the Great"
        great_magicians.append(great_magician)
     
    print(id(magicians))
    magicians = great_magicians[:]
    print(id(magicians))

        
m = ['lucifer', 'lily', 'teena']

make_great(m)

print(m)

print()

def make_great(magicians):
    great_magicians = []

    while magicians:
        magician = magicians.pop()
        great_magician = magician + " the Great"
        great_magicians.append(great_magician)
     
    print(id(magicians))
    for great_magician in great_magicians:
        magicians.append(great_magician)
    print(id(magicians))

        
m = ['lucifer', 'lily', 'teena']

make_great(m)

print(m)

上面的想多了,把等号=换成+=就可以了

【有帮助请采纳】

你这是变量的问题,你没有搞清楚全局变量和局部变量

def make_great(magicians):
    great_magicians = []

    while magicians:
        magician = magicians.pop()#magician只是在这个函数中的局部变量而已,这个list不是高维list,一般的复制方式都可以
        great_magician = magician + " the Great"
        great_magicians.append(great_magician)
 
    global m#声明m为全局变量
    m = great_magicians[:]

m = ['lucifer', 'lily', 'teena']
make_great(m)
print(m)

【有帮助请采纳】