You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3:如何在函数中修改列表元素并永久变更列表

给魔术师姓名列表批量添加前缀并永久修改列表的解决方案

嘿,我看你已经能通过循环打印出带"The Great"前缀的魔术师名字了,但想让原列表magician_names被永久修改,调用函数后直接打印列表就能看到修改后的内容对吧?咱们来一步步解决这个问题:

先说说你现有代码的问题

你的make_great函数里,['The Great' , name]只是临时创建了一个包含前缀和名字的小列表,但没有把这个结果存回原列表,所以原列表完全没变化;而且里面的while True循环完全是多余的,根本不需要用while来做这个遍历修改的操作。

正确的实现方式

这里有两种简单的方法可以永久修改原列表:

方法1:通过索引直接修改原列表元素

这种方法会直接改动原列表的每一个元素,不需要创建新列表:

magician_names = ['houdini' , 'chris angel', 'ted']

def show_magicians():
    print("These are your magicians tonight.")
    for name in magician_names:
        print(name)

def make_great():
    # 遍历列表的索引位置,逐个修改元素
    for i in range(len(magician_names)):
        magician_names[i] = f"The Great {magician_names[i]}"

# 先调用函数修改列表
make_great()
# 打印修改后的魔术师名单
show_magicians()
# 直接打印列表验证修改结果
print(magician_names)

方法2:用列表推导式生成新列表并替换原列表

这种方法更简洁,适合喜欢Pythonic写法的场景,需要注意声明使用全局变量(如果函数里要修改全局列表的话):

magician_names = ['houdini' , 'chris angel', 'ted']

def make_great():
    # 声明使用全局的magician_names变量
    global magician_names
    # 用列表推导式生成带前缀的新列表,直接替换原列表
    magician_names = [f"The Great {name}" for name in magician_names]

# 修改列表
make_great()
# 打印修改后的列表
print(magician_names)

运行效果

不管用哪种方法,调用make_great()后打印magician_names,都会得到你想要的结果:

['The Great houdini', 'The Great chris angel', 'The Great ted']

内容的提问来源于stack exchange,提问作者drewmende

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:48:59