只是一個簡單的問題:字符串調整爲環
str = ['blah','blah']
for word in str:
word = word * 2
print str
這只是打印[「嗒嗒」,「胡說」。爲什麼(我知道如何做到這一點,只是想知道爲什麼這是不允許的)?
只是一個簡單的問題:字符串調整爲環
str = ['blah','blah']
for word in str:
word = word * 2
print str
這只是打印[「嗒嗒」,「胡說」。爲什麼(我知道如何做到這一點,只是想知道爲什麼這是不允許的)?
問題是你已經創建了一個新的字符串,但沒有更新str列表中的引用。這意味着,
word = word * 2
影響變量字,有一個新的地址,這個地址(參考) 不更新到海峽名單。要做到這一點,你需要:
str[i] = str[i] * 2
或
word = word * 2
str[i] = word
當你分配一個名稱的新值,它永遠不會改變名稱的舊值:
word = word * 2
這需要字的值,它加倍,並使其字的新值。舊值不變。
在這種情況下,您要求打印數組對象。 for循環沒有對數組中的值做任何事情。
因爲在這個語言沒有標準的設施。即你希望word
是一個「指針」str[...]
,Python中沒有這樣的東西。另外,如果str
是一個發電機?
不可變性不言而喻:如果元素是列表,問題將是相同的:分配給名稱不會改變名稱的舊值 –
@Ned:感謝更正。 – rafalotufo