Python 函数修改列表,为什么原列表没有变化?
函数交互疑惑解惑
作为文科零基础的小白,在学习 python 函数时可能会遇到一些疑惑。本文将解析一个具体的问题,帮助你深入理解函数的用法。
问题
在以下代码中,希望先通过函数 make_great 修改列表 names,再使用函数 show_magicians 显示修改后的结果。但是实际运行时,names 并未被修改。这是为什么?
def make_great(names): for name in names: name_1 = "the great " + name.title() print(name_1) def show_magicians(names): for name in names: print(name.title()) names = ["a", "b", "c", "tutu", "mumu"] make_great(names) show_magicians(names)
解答
在这个例子中,函数 make_great 想要修改 names 列表,但它并不会实际修改原有列表。它只是在循环内部创建了一个新的变量 name_1,并向其中添加了修饰符。
要解决这个问题,一种方法是使用 python 的 map 函数。map 函数将一个函数应用于可迭代对象的每个元素,并返回一个新对象。我们可以利用它来修改 names 列表。
def make_great(names): return map(lambda name: "the Great " + name.title(), names) def show_magicians(names): for name in names: print(name.title()) names = ["A", "b", "c", "tutu", "mumu"] show_magicians(make_great(names))
在这个修改后的代码中,make_great 函数使用 map 函数返回一个新的对象,该对象包含了修改后的名称。然后将该新对象传递给 show_magicians 函数,从而实现了函数之间的交互。
以上就是Python 函数修改列表,为什么原列表没有变化?的详细内容,更多请关注硕下网其它相关文章!