修改Python的list我有以下Python代码:通过它传递给函数
def make_great(l):
l = ['The great ' + magician for magician in l]
magicians = ['Tom']
make_great(magicians)
print(magicians)
打印语句打印原始列表,而不是一个由make_great()
功能修改。我试图找出修改Python列表中的每个元素没有明确访问它的索引,然后重新分配该索引的新值的方式。不会的magicians
列表现在都指向基于Python的内存模型的理解形成的新的列表?我猜测,我没有得到期望的结果,因为这是一个范围的问题吗?但是,当我通过在magicians
,它在功能参数,因此Python解释器实际看到magicians = ['The ...
取代l
?
的问题是,你正在修改的局部变量'l'引用新的对象引用或值。相反,你应该修改'l'引用的对象。 – rrrzx
我很困惑,当我使用索引表示法,'l [i]'修改列表时,为什么这不被视为局部变量,但是当我使用'='运算符将'magicians'重新分配给一个新的名单,它现在被认为是本地? –
@MutatingAlgorithm考虑将'l'变量名重命名为'lst'或其他更好的可读名称,因为它可以防止与数字'1'混淆。 –