Skip to main content
 首页 » 编程设计

python从for循环中更新外部传递的值

2025年05月04日14sxdcgaq8080

我的问题是 How do I pass a variable by reference? 的细微变化- 但是我仍然找不到解决下面问题的简单解决方案:如何从 for 循环中更改外部字符串变量的值?

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

感谢下面的有用回复,但是它们并没有真正帮助解决我的具体问题,下面的代码不太通用,但更好地反射(reflect)了我的用例:

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  

可以看到原来的两个字符串变量没有更新。 for 循环旨在检测和处理格式错误的字符串,例如对“描述”的赋值。因此,我们将不胜感激任何“相关”建议。

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

请您参考如下方法:

创建一个字符串列表,而不是将它们作为单独的变量处理,然后您可以使用 enumerate 遍历它们:

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