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
相关产品推荐
相关产品推荐

