python - 通过将 python 中的列表传递给函数来修改列表

标签 python list function

我有以下 python 代码:

def make_great(l):
    l = ['The great ' + magician for magician in l]

magicians = ['Tom']
make_great(magicians)
print(magicians)

print 语句打印原始列表,而不是由 make_great() 函数修改的列表。我试图找出一种方法来修改 python 列表的每个元素,而无需显式访问它的索引,然后为该索引重新分配一个新值。难道magicians列表现在不是指向基于Python内存模型的推导形成的新列表吗?我猜我没有得到预期的结果,因为这是一个范围界定问题?但是当我传入 magicians 时,它会替换函数参数中的 l ,因此 python 解释器实际上会看到 magicians = ['The ...

最佳答案

当您将其分配给l时,您是在重新定义l,而不是修改它。使用 l[:] 代替:

def make_great(l):
    l[:] = ['The great ' + magician for magician in l]

您还可以返回列表并重新定义magicians:

def make_great(l):
    return ['The great ' + magician for magician in l]

magicians = ['Tom']
magicians = make_great(magicians)
print(magicians)

在这种情况下,您可以将 magicians 分配给 make_great(['Tom']):

magicians = make_great(['Tom'])
print(magicians)

关于python - 通过将 python 中的列表传递给函数来修改列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35641116/

相关文章:

python - 将来自循环的多个线程排队的最安全方法是什么?

python - 高级 for 循环

c++ - 形式参数列表不匹配

java - 使用变量值来选择要更改的 UI 标签

python - 当以 f(x)(y) 格式调用 Python 函数时,这意味着什么?

python - 将上限和下限应用于 Pandas Dataframe

python - pandas python优化利润,线性优化

python - 车轮名称与平台无关,即使我的包包含已编译的库

java - 如何在 Java 中使用 set 来识别唯一的整数列表

c# - 将自定义列表与组合框等控件连接起来