【发布时间】:2011-09-18 04:02:56
【问题描述】:
一个简单的问题:
str = ['blah','blah']
for word in str:
word = word * 2
print str
这只是打印 ['blah','blah']。为什么(我知道怎么做,只是想知道为什么不允许这样做)?
【问题讨论】:
标签: python string list loops for-loop
一个简单的问题:
str = ['blah','blah']
for word in str:
word = word * 2
print str
这只是打印 ['blah','blah']。为什么(我知道怎么做,只是想知道为什么不允许这样做)?
【问题讨论】:
标签: python string list loops for-loop
问题是您创建了一个新字符串,但没有更新 str 列表中的引用。这意味着
word = word * 2
影响具有新地址的变量字,而这个地址(引用) 未更新到 str 列表。为此,您需要:
str[i] = str[i] * 2
或
word = word * 2
str[i] = word
【讨论】:
当您为名称分配新值时,它永远不会更改名称的旧值:
word = word * 2
这会将 word 的值加倍,并使其成为 word 的新值。旧值不变。
【讨论】:
在这种情况下,您要求打印数组对象。 for 循环没有对数组中的值做任何事情。
【讨论】:
因为语言中没有为此提供标准工具。 IE。您希望 word 成为指向 str[...] 的“指针”,而 Python 中没有这样的东西。另外,如果str 是一个生成器呢?
【讨论】: