Simulating C-style for loops in python
Posted
by YGA
on Stack Overflow
See other posts from Stack Overflow
or by YGA
Published on 2010-04-29T21:30:26Z
Indexed on
2010/04/29
21:47 UTC
Read the original article
Hit count: 285
python
(even the title of this is going to cause flames, I realize)
Python made the deliberate design choice to have the for
loop use explicit iterables, with the benefit of considerably simplified code in most cases.
However, sometimes it is quite a pain to construct an iterable if your test case and update function are complicated, and so I find myself writing the following while loops:
val = START_VAL
while <awkward/complicated test case>:
# do stuff
...
val = <awkward/complicated update>
The problem with this is that the update is at the bottom of the while
block, meaning that if I want to have a continue
embedded somewhere in it I have to:
use duplicate code for the complicated/awkard update, AND
run the risk of forgetting it and having my code infinite loop
I could go the route of hand-rolling a complicated iterator:
def complicated_iterator(val):
while <awkward/complicated test case>:
yeild val
val = <awkward/complicated update>
for val in complicated_iterator(start_val):
if <random check>:
continue # no issues here
# do stuff
This strikes me as waaaaay too verbose and complicated. Do folks in stack overflow have a simpler suggestion?
© Stack Overflow or respective owner