2010-10-19 57 views
0

我想內改變一個變量的值的循環,但隨後有新的保留變量發生變化時,循環結束在Python 2.6如何改變中的一個全局變量循環

我嘗試(從什麼我實際上做)

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循環中找不到匹配,我就打印它t將其打印「empty_row」(前面定義的字符串)

+4

有點難以看到你在說什麼......你可以在循環中分配變量,就像你在外面的變量一樣。 – Tim 2010-10-19 14:06:29

+0

你可以在原始問題中發表你的帖子嗎? (使用'edit'鏈接。) – 2010-10-19 14:17:18

+3

這遠不是有效的python,你能發佈你的實際代碼嗎? – SilentGhost 2010-10-19 14:19:42

回答

1

for循環不影響在Python變量範圍(比如,他們可以在C)

如果您使用的是函數內部的變量,你可以使用global [var]來聲明,當你提到[var]時,你的意思是全球一個。

This是範圍在Python

+0

看到其他評論範圍,並感謝 我想也許它會在後續的迭代中重新定義,但如果它只會改變時,如果條件遇到它應該不會受到後續迭代的影響... – Kirt 2010-10-19 15:36:31

3

一個體面的概述如果你曾試圖只是改變了變數,你會看到,它只是工作。 Python沒有單獨的循環範圍。

+0

啊...我一直在想這個,並且找不到明確的答案,所以我一直在相反的假設上運行,我會把它拿出來測試一下,謝謝。 – Kirt 2010-10-19 15:32:21

0
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) 
+0

看起來比我的更優雅,但是其他的都不需要與if一致嗎?它看起來有點奇怪。 – Kirt 2010-10-19 15:40:34

+0

'else'屬於'for',而不是'if'。如果循環不執行至少一次迭代,則執行'else'塊。 – kindall 2010-10-19 16:41:58

+0

是的,我想知道如果這可能是它,但不能解決如何一個for可以有別的,它是否涉及到休息? – Kirt 2010-10-19 18:10:15