хорошо, спасибо за объяснение.

у мой итератор возвращает дополнительный 'None' в выводе. Для параметров / пример ниже, я получаю[None,4,None] вместо желаемого[4] Может кто-нибудь объяснить, почему я получаю дополнительный None и как я могу это исправить? Распечатка «возврат» появляется только один раз, поэтому я предполагаю, что к возвращающей вызывающей функции должен быть добавлен только один элемент.

код:

class Prizes(object):
    def __init__(self,purchase,n,d):
        self.purchase = purchase
        self.length = len(purchase)
        self.i = n-1
        self.n = n
        self.d = d

    def __iter__(self):
        return self

    def __next__(self):
        if self.i < self.length:
            old = self.i
            self.i += self.n
            if (self.purchase[old])%(self.d) == 0:
                print("returning")
                return old+1
        else:
            raise StopIteration

def superPrize(purchases, n, d):
    return list(Prizes(purchases, n, d))

purchases = [12, 43, 13, 465, 1, 13]
n = 2
d = 3
print(superPrize(purchases, n, d))

Выход:

returning
[None, 4, None]

Ответы на вопрос(2)

Ваш ответ на вопрос