Я делаю это, чтобы лучше понять методы iter()
и next()
.Создание функции, которая меняет итератор
Так что я понимаю, это можно легко сделать, как это использовать некоторые встроенные модули:
>>>animal = 'cat'
>>>print(list(reversed(animal)))
['t','a','c']
Но это также может быть сделано создание класса итератора:
class Reverselist():
def __init__(self, data):
self.data = data
self.index = len(data)
def __iter__(self):
return self
def __next__(self):
if self.index == 0:
raise StopIteration
self.index =self.index -1
return self.data[self.index]
def intolist(self):
self.test = [i for i in self]
return self.test
rev = Reverselist('cat')
print(rev.intolist())
['t','a','c']
Однако, я с некоторыми проблемами, делающими то же самое, но используя функции вместо перехода на маршрут ООО.
Есть ли способ сделать это с помощью функций с использованием методов iter()
и next()
без необходимости прибегать к пониманию и циклам?
Что именно вы подразумеваете под «использованием функций»? В качестве генераторной функции должен быть просто ваш собственный итератор обратного списка, но вам понадобится хотя бы один цикл какого-либо типа (либо «while index> 0», либо «for index in range» (len (lst) -1, - 1, -1) '). – Blckknght
Не путайте итераторы и итерации. Итератору необязательно нужно генерировать конечную последовательность, и поэтому не имеет последнего элемента для начала. – chepner