2011-06-19 71 views
1

只是一個簡單的問題:字符串調整爲環

str = ['blah','blah'] 
for word in str: 
    word = word * 2 
print str 

這只是打印[「嗒嗒」,「胡說」。爲什麼(我知道如何做到這一點,只是想知道爲什麼這是不允許的)?

回答

1

問題是你已經創建了一個新的字符串,但沒有更新str列表中的引用。這意味着,

word = word * 2 

影響變量字,有一個新的地址,這個地址(參考) 不更新到海峽名單。要做到這一點,你需要:

str[i] = str[i] * 2 

word = word * 2 
str[i] = word 
+0

不可變性不言而喻:如果元素是列表,問題將是相同的:分配給名稱不會改變名稱的舊值 –

+0

@Ned:感謝更正。 – rafalotufo

1

當你分配一個名稱的新值,它永遠不會改變名稱的舊值:

word = word * 2 

這需要字的值,它加倍,並使其字的新值。舊值不變。

0

在這種情況下,您要求打印數組對象。 for循環沒有對數組中的值做任何事情。

0

因爲在這個語言沒有標準的設施。即你希望word是一個「指針」str[...],Python中沒有這樣的東西。另外,如果str是一個發電機?