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循环旨在检测和处理格式错误的字符串,例如"描述"的赋值.所以任何"关联"的建议都将受到赞赏.
我喜欢下面的列表理解切片分配方法的优雅,并且理想地使用该技术.
创建一个字符串列表而不是将它们作为单独的变量处理,然后你可以使用以下代码循环它们enumerate:
strs = ['before', 'before']
for i, s in enumerate(strs):
print s
strs[i] = "after"
print strs
Run Code Online (Sandbox Code Playgroud)