0

假设我必须循环一些东西并随着循环的进行保持各种特征的计数器。在循环之前,我可以使用初始值创建这些不同的计数器变量。

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

1 回答 1

2

不要打扰。如果您需要一个变量,请定义它。它会以一种或另一种方式发生。


您可以使用 a defaultdict,然后只增加字典上的各种键。将为您初始化密钥。这比创建“变量”更可取。

from collections import defaultdict
counts = defaultdict(int)
counts[1] += 1
counts[2] += 2

如果您想在迭代时计算某些内容,请使用enumerate.

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

通过这种方式,您的两个反例都可以很容易地从单个计数中得出。(它们也可以仅从数据的长度中得出)。

于 2015-10-07T15:51:25.887 回答