【问题标题】:in python 2.6 how do i change a global variable within a for loop [closed]在python 2.6中,我如何在for循环中更改全局变量[关闭]
【发布时间】:2010-10-19 14:00:48
【问题描述】:

我想在 for 循环中更改变量的值,然后在循环结束时更改新的保留变量

我的尝试(有点简化了我实际在做的事情)

SNP 是一个列表,compar_1 是一个列表的列表

line_1 = empty_row
for SNP1 in compar_1:
    global line_1
    if SNP[3] == SNP1[3] 
        compare_line_1 = SNP1 
print = line_1
output_file.write(to_print)

如果它在循环中找到匹配项,我希望它将变量更改为该变量以便打印,如果它在 for 循环中找不到匹配项,我希望它打印“empty_row”(定义的字符串早)

【问题讨论】:

  • 有点难以理解您在说什么...您可以在循环中分配变量,就像在循环之外一样。
  • 您可以在原始问题中发布您的帖子吗? (使用edit 链接。)
  • 这不是有效的python,你能发布你的实际代码吗?
  • 完整代码太长,我想我现在已经解决了我的问题

标签: python for-loop global-variables python-2.x


【解决方案1】:

如果您尝试只更改变量,您会发现它确实有效。 Python 没有单独的循环范围。

【讨论】:

  • 啊...我前段时间想知道,但找不到明确的答案,所以我一直在运行相反的假设,我会拿出来测试一下,谢谢.
【解决方案2】:

for 循环不会影响 Python 中的变量范围(就像在 C 中一样)

如果您在函数中使用变量,则可以使用 global [var] 声明当您引用 [var] 时,您的意思是全局变量。

This 是 Python 范围的一个不错的概述

【讨论】:

  • 查看其他关于范围的评论,谢谢,我在想它可能会在后续迭代中重新定义,但如果它仅在满足条件时才发生变化,则它不应该受到后续迭代的影响完全...
【解决方案3】:
for SNP1 in compar_1:
    if SNP[3] == SNP1[3]:
        line_1 = SNP1 
        break
else:
    line_1 = empty_row
to_print = line_1
output_file.write(to_print)

【讨论】:

  • 看起来比我的优雅,但是else不需要和if一致吗?看起来有点奇怪。
  • else 属于for,而不是if。如果循环没有进行至少一次迭代,则执行 else 块。
  • 是的,我想知道是否可能是这样,但无法弄清楚 for 怎么可能有 else,这与休息有关吗?
  • 它确实与中断有关,本质上,如果循环自然终止(即不是中断),则执行 for 循环的 else 。因此,在您的示例中,如果表达式“if SNP[3] == SNP1[3]”永远不会计算为 true,则 else 将被执行。
猜你喜欢
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
相关资源
最近更新 更多