如何在Python中使用计数器变量而不必在使用前创建它们?

时间:2015-10-07 15:47:10

标签: python counter locals

假设循环过程中我必须循环某些东西并保留各种特征的计数器。在循环之前,我可以使用初始值创建这些各种计数器变量。

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

有更紧凑或有效的方法吗?

1 个答案:

答案 0 :(得分:2)

不要打扰。如果需要变量,请定义它。它会以某种方式发生。

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

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

如果您想迭代它,请使用enumerate

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

这两个反例都可以通过这种方式从单个计数中轻松得出。 (它们也可以从数据的长度得出。)