Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
resetting a generator
#2
I would define instead a class that obeys the iterator protocol, that is to say it has __iter__() and __next__() methods and the latter raises StopIteration when the iterator is exhausted. For example
class WalkList:
    def __init__(self, seq):
        if not isinstance(seq, list):
            raise TypeError('list argument expected, got', type(seq))
        self.seq = seq
        self.reset()
        
    def reset(self):
        self.ite = iter(self.seq)
        
    def __next__(self):
        return next(self.ite)
    
    def __iter__(self):
        return self
    
walk = WalkList(list(range(7)))

r = True
for item in walk:
    if r and item == 3:
        walk.reset()
        r = False
        continue
    print(item)
Output:
λ python3 paillasse/genstate.py 0 1 2 0 1 2 3 4 5 6
Reply


Messages In This Thread
resetting a generator - by Skaperen - Nov-09-2019, 06:07 AM
RE: resetting a generator - by Gribouillis - Nov-10-2019, 04:21 PM
RE: resetting a generator - by Skaperen - Nov-10-2019, 08:36 PM
RE: resetting a generator - by Gribouillis - Nov-10-2019, 08:50 PM
RE: resetting a generator - by Skaperen - Nov-12-2019, 09:44 PM
RE: resetting a generator - by Gribouillis - Nov-12-2019, 10:37 PM
RE: resetting a generator - by Skaperen - Nov-13-2019, 04:44 AM
RE: resetting a generator - by Gribouillis - Nov-13-2019, 06:13 AM
RE: resetting a generator - by Skaperen - Nov-14-2019, 04:09 AM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020