【发布时间】:2020-02-22 10:45:00
【问题描述】:
我正在尝试创建一个用作计数器的列表,例如每次发生事件时,都会在其中添加一个数字以跟踪它发生的频率。它或多或少可以作为列表的索引。
我是 python 新手,这就是为什么有些人可能会将我的代码视为意大利面条代码。
我的主类调用一个索引长度为 0-50 的数组类来创建它的对象。它还使用对象的值 0 启动计数器,如下所示。
def __init__(self):
self._table = Array((0,), (50,))
self._counter = 0
我运行这个方法,取key 和obj 的值来填充数组对象。但是,当向方法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
据我所知,可下标对象是可以用作列表或字典的东西。我的错误是否因为index[i] 而发生,因为我的计数器是int 对象而不是实际上的列表?如果是这样的话,关于我关于这篇文章的问题,有没有办法让我创建一个可以作为更好的计数器的列表?
【问题讨论】:
-
“比如每次发生事件时,都会添加一个数字来跟踪它发生的频率” ...这是一个 XY 问题。您需要告诉我们您正在尝试解决的任务,而不是询问您认为如何解决它的问题。什么样的活动?需要计算什么,为什么?您想总体实现什么目标?
-
self.counter 在您的代码中是 int 。错误是由于 index[i] 传递给 enter_value(index= self.counter)
标签: python arrays list counter