Есть ли способ создать список, который будет работать как счетчик? - PullRequest
2 голосов
/ 22 февраля 2020

Я пытаюсь создать список, который работает как счетчик, например, каждый раз, когда происходит событие, к нему добавляется номер, чтобы отслеживать частоту его возникновения. Это будет работать как указатель на список более или менее.

Я новичок в python, поэтому некоторые могут видеть мой код как спагетти-код.

У меня есть мой Основной класс вызывает класс массива длиной 0-50 индексов для создания объекта из него. Он также инициирует счетчик со значением 0 для объекта, как показано ниже.

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

Я запускаю этот метод, принимая значения key и obj, чтобы заполнить объект массива. Однако при вводе параметров в метод enter_value() выдается сообщение об ошибке: 1011 *.

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, а не списком? Если это так, что касается моего вопроса об этом посте, есть ли способ для меня создать список, который будет работать как счетчик, который лучше?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2020

да, ваша ошибка возникает из-за того, что ваша переменная self._counter является int

, если вы хотите иметь список в качестве счетчика, вы можете использовать:

self._counter = [0]

каждый раз Вы хотите увеличить счетчик, который можете сделать:

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

self._counter [-1] - ваше действительное значение счетчика

2 голосов
/ 22 февраля 2020

Ошибка возникает из-за того, что значение, которое вы передаете в self._table.enter_value в качестве индекса, является self._counter, которое является целым числом, а не списком, и, следовательно, недопустимо.

...