python更新外部传递的值来自for循环

evi*_*len 1 python for-loop reference immutability

我的问题是如何通过引用传递变量的细微变化- 但是我仍然找不到下面说明的问题的简单解决方案:如何在for-loop中改变外部字符串变量的值?

str1 = 'before'
str2 = 'before'

for i in str1,str2:
    print "%s" % (i)
    i = "after"

for i in str1,str2:
    print "%s" % (i)
Run Code Online (Sandbox Code Playgroud)

感谢下面的有用回复,但是他们对我的具体问题并没有真正帮助,下面的代码不太通用,但更好地反映了我的用例:

import feedparser
d = feedparser.parse('http://feeds.feedburner.com/FrontlineAudiocastPbs?format=xml')
name = d.feed.title[:127]
description = d.feed.subtitle[:255]

strs = [name,description]
for i, s in enumerate(strs):
    try:
      strs[i] = unicode(strs[i])
    except:
      strs[i] = "Invalid unicode detected!"

for s in name,description:
  print s 
Run Code Online (Sandbox Code Playgroud)

您可以看到两个原始字符串变量未更新.for循环旨在检测和处理格式错误的字符串,例如"描述"的赋值.所以任何"关联"的建议都将受到赞赏.

我喜欢下面的列表理解切片分配方法的优雅,并且理想地使用该技术.

Ned*_*der 5

创建一个字符串列表而不是将它们作为单独的变量处理,然后你可以使用以下代码循环它们enumerate:

strs = ['before', 'before']
for i, s in enumerate(strs):
    print s
    strs[i] = "after"

print strs
Run Code Online (Sandbox Code Playgroud)