有没有办法创建一个可以用作计数器的列表?

Is there a way to create a list that would work as a counter?

我正在尝试创建一个用作计数器的列表,例如每次事件发生时,都会向其中添加一个数字以跟踪它发生的频率。它或多或少可以作为列表的索引。

我是 python 的新手,这就是为什么有些人可能会将我的代码视为意大利面条代码的原因。

我的主要 class 调用一个长度为 0-50 索引的数组 class 来创建它的对象。它还会为对象启动值为 0 的计数器,如下所示。

def __init__(self):
    self._table = Array((0,), (50,))
    self._counter = 0

我用运行这个方法,取keyobj的值,来填充数组对象。但是,当向方法 enter_value() 输入参数时,它会给出错误提示 TypeError: 'int' object is not subscriptable.

def populate_test(self, key, obj):
    for i in range(len(self._table._array)):
        self._table.enter_value(self._counter, (key, obj))
        self._counter = self._counter + 1

这是enter_value方法。

def enter_value(self, index, value):
    for i in range(len(self._table._array)):
         ###Here's where the error occurs
         if (index[i] < self._low[i]) or (index[i] > self._high[i]):
             //Do something

据我所知,可订阅对象是用作列表或字典的对象。因为我的计数器是一个 int 对象而不是一个列表,所以我的错误是否是由于 index[i] 而发生的?如果是这样的话,关于我关于这个 post 的问题,有没有办法让我创建一个更好的计数器列表?

出现错误是因为您作为索引传递给 self._table.enter_value 的值是 self._counter,它是一个整数,而不是列表,因此不可订阅。

是的,您的错误发生是因为您的 self._counter 变量是 int

如果您想将列表作为计数器,您可以使用:

self._counter = [0]

每次您想增加计数器时,您可以这样做:

self._counter.append(self._counter[-1] + 1)

self._counter[-1]是你的实际计数器值