我有以下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 ...
?你知道吗
你的函数没有返回任何东西。您可以在函数中使用print语句,也可以返回修改后的列表,然后将其打印出来
当您将它赋给
l
时,您是在重新定义l
,而不是修改它。改用l[:]
:您还可以返回列表并重新定义
magicians
:在这种情况下,您可以将
magicians
分配给make_great(['Tom'])
:make theu great函数复制你的数组,所以你需要返回并将结果分配给魔术师。你知道吗
您可以检查How do I pass a variable by reference?以在函数中传递引用或值
相关问题 更多 >
编程相关推荐