2015-10-07 60 views
0

假設我必須循環一些東西,並在循環過程中保持各種特性的計數器。在循環之前,我可以用初始值創建這些不同的計數器變量。如何在Python中使用計數器變量而不必在使用前創建計數器變量?

count1 = 0 
count2 = 0 

for index in range(0, 10): 
    count1 += 1 
    count2 += 2 

print count1, count2 

或者,當它第一次真正使用在創建該變量,如果不存在,然後變量遞增它的循環條件語句中時,我可以創建計數器變量。

for index in range(0, 10): 
    if "count1" not in locals(): 
     count1 = 0 
    if "count2" not in locals(): 
     count2 = 0   
    count1 += 1 
    count2 += 2 

print count1, count2 

有沒有更緊湊或有效的方法來做到這一點?

+4

不要。只需創建變量。 – davidism

+2

那麼,在上面列出的例子中,你可以使用'count1 = sum(1代表_範圍(10)'和'count2 = sum(2代表_範圍(10)'。 –

+1

你可以把它們放在一個如果你想:'count1,count2 = 0,0' – vaultah

回答

2

不要打擾。如果你需要一個變量,定義它。它會以某種方式發生。


您可以使用defaultdict,然後就增加對字典的各種按鍵。鑰匙將爲您初始化。這比創建「變量變量」更可取。

from collections import defaultdict 
counts = defaultdict(lambda: 0) 
counts[1] += 1 
counts[2] += 2 

如果你想爲你迭代它算什麼東西,用enumerate

for i, item in enumerate(data): 
    print(i) 

這兩種計數器的例子都可以通過這種方式很容易地從單個計數中派生出來。 (他們也可能只是從數據的長度中導出)。

+0

注意'int()== 0',所以'defaultdict(詮釋)'也會工作。 – jonrsharpe