更新列表元素很慢

时间:2017-12-01 15:44:46

标签: python performance list counter

我需要有十个计数器,如果满足某些条件,我会在循环中更新。

我的常规方法是创建一个包含10个元素的列表并更新此列表的元素。

虚拟例子:

my_counters = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(100000):
    if condition1:
        my_counters[0] += 1
        my_counters[4] += 1
    elif condition2:
        my_counters[2] += 1
        my_counters[8] += 1
    ...

然而,这似乎是糟糕而低效的代码,我不知道为什么。

所以我想知道这个简单问题的最佳方法是什么。 我当然有一些建议:

1)为每个计数器使用一个变量缺点:变量太多,如果我需要100个计数器怎么办?

2)使用numpy数组而不是列表(那么它会被认为是好的和有效的代码吗?)

3)使用字典:这样每个变量都可以有一个代表名称,但是哈希不会使访问速度慢于索引吗?

解决这个问题的正确方法是什么?

而且,为什么更新列表的元素是有效的?难道不能立即计算地址吗?基地址+偏移量

由于

0 个答案:

没有答案