通过将列表传递给函数来修改 python 中的列表
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]
您还可以 return 列表并重新定义 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)
您的函数没有 returning 任何东西。您可以在函数中包含打印语句或 return 修改后的列表,然后打印它
def make_great(l):
return ['The great ' + magician for magician in l]
magicians = ['Tom']
magicians = make_great(magicians)
print(magicians)
make_great函数复制了你的数组,所以你需要return并将结果分配给魔术师。
您可以检查 How do I pass a variable by reference? 在函数中传递引用或值
我有以下 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]
您还可以 return 列表并重新定义 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)
您的函数没有 returning 任何东西。您可以在函数中包含打印语句或 return 修改后的列表,然后打印它
def make_great(l):
return ['The great ' + magician for magician in l]
magicians = ['Tom']
magicians = make_great(magicians)
print(magicians)
make_great函数复制了你的数组,所以你需要return并将结果分配给魔术师。
您可以检查 How do I pass a variable by reference? 在函数中传递引用或值