【问题标题】:String adjustment in for-loopfor循环中的字符串调整
【发布时间】: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


    【解决方案1】:

    问题是您创建了一个新字符串,但没有更新 str 列表中的引用。这意味着

    word = word * 2
    

    影响具有新地址的变量字,而这个地址(引用) 未更新到 str 列表。为此,您需要:

    str[i] = str[i] * 2
    

    word = word * 2
    str[i] = word
    

    【讨论】:

    • 不变性无关紧要:如果元素是列表,问题将是相同的:分配给名称不会更改名称的旧值
    【解决方案2】:

    当您为名称分配新值时,它永远不会更改名称的旧值:

    word = word * 2
    

    这会将 word 的值加倍,并使其成为 word 的新值。旧值不变。

    【讨论】:

      【解决方案3】:

      在这种情况下,您要求打印数组对象。 for 循环没有对数组中的值做任何事情。

      【讨论】:

        【解决方案4】:

        因为语言中没有为此提供标准工具。 IE。您希望 word 成为指向 str[...] 的“指针”,而 Python 中没有这样的东西。另外,如果str 是一个生成器呢?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-22
          • 2020-05-22
          • 2018-11-22
          相关资源
          最近更新 更多