繁体   English   中英

通过将列表传递给函数来修改列表

[英]Modifying a list in python by passing it to a 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)

您的函数未返回任何内容。 您可以在函数中使用打印语句,也可以返回修改后的列表,然后进行打印

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

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

make_great函数复制您的数组,因此您需要返回结果并将其分配给魔术师。

您可以检查如何通过引用传递变量? 用于在函数中传递引用或值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM