PHP前端开发

Python 函数修改列表,为什么原列表没有变化?

百变鹏仔 5天前 #Python
文章标签 列表

函数交互疑惑解惑

作为文科零基础的小白,在学习 python 函数时可能会遇到一些疑惑。本文将解析一个具体的问题,帮助你深入理解函数的用法。

问题

在以下代码中,希望先通过函数 make_great 修改列表 names,再使用函数 show_magicians 显示修改后的结果。但是实际运行时,names 并未被修改。这是为什么?

立即学习“Python免费学习笔记(深入)”;

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 函数,从而实现了函数之间的交互。