I don't think 'repeat' should make it into the language. But: it's an excellent test case to check how flexible the language already is. Joao did a great job demonstrating what's possible!
On Thu, 26 Jan 2023, 21:15 Joao S. O. Bueno, <[email protected]> wrote: > I don't think this will fly - if not for any other reason, it is a very > rare pattern > to take place alongside such important flow-control statements as > continue and break > > But for your convenience, here is a small wrapper that, along with the > walrus operator, could be used when you need that functionality: > > ``` > class Repeatable: > def __init__(self, it): > self.it = it > self.repeat_last = False > self.last_item = None > def repeat(self): > self.repeat_last = True > def __iter__(self): > for item in self.it: > while self.repeat_last: > self.repeat_last = False > yield self.last_item > self.last_item = item > yield item > > > test = 1 > for x in (rx:=Repeatable(range(3))): > print(x) > if x == test: > test = -1 > rx.repeat() > ``` > > On Thu, Jan 26, 2023 at 4:41 PM Thomas Ratzke <[email protected]> > wrote: > >> Hi all, >> >> i would like to suggest the following Python feature. It naturally >> happens that one want's to repeat the current iteration of a for loop >> for example after an error happened. For this purpose, I usually set a >> flag and put a while loop inside my for loop. A simple "repeat" >> statement just like "continue" or "break" would make the code much more >> readable. >> >> >> This is my solution at the moment with A being checked: >> >> for _ in range(n): >> flag = True >> while flag: >> ... >> if A: >> flag = False # go to next iteration >> >> >> I would suggest the repeat statement in the following sense >> >> for _ in range(n): >> ... >> if not A: >> repeat # repeat current iteration >> >> Notice the "not" in the if clause. I am really looking forwars to hear >> your opinions. >> >> Best regards >> Thomas >> >> _______________________________________________ >> Python-Dev mailing list -- [email protected] >> To unsubscribe send an email to [email protected] >> https://mail.python.org/mailman3/lists/python-dev.python.org/ >> Message archived at >> https://mail.python.org/archives/list/[email protected]/message/LNER4MH6IT6HBFKFVTUOJ225PTCZSRRC/ >> Code of Conduct: http://python.org/psf/codeofconduct/ >> > _______________________________________________ > Python-Dev mailing list -- [email protected] > To unsubscribe send an email to [email protected] > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/[email protected]/message/WWEJQD7IIPNC4FUSPHLXEH7SVN6EVK6H/ > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-Dev mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/AJLFDS7RACGYZTGW4U4EAGP5DYMSOJDW/ Code of Conduct: http://python.org/psf/codeofconduct/
