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

2024-04-20 13:16:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下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 ...?你知道吗


Tags: the方法函数代码in列表formake
3条回答

你的函数没有返回任何东西。您可以在函数中使用print语句,也可以返回修改后的列表,然后将其打印出来

当您将它赋给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 theu great函数复制你的数组,所以你需要返回并将结果分配给魔术师。你知道吗

您可以检查How do I pass a variable by reference?以在函数中传递引用或值

相关问题 更多 >