修改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'混淆。 –