[Python-ideas] Variations on a loop
Mathias Panzenböck
grosser.meister.morti at gmx.net
Fri Aug 29 15:19:59 CEST 2008
Bruce Frederiksen wrote:
> Bruce Leban wrote:
>>
>> For example:
>>
>> result = ""
>> for x in items:
>> result += str(x)
>> interstitially:
>> result += ", "
>> contrariwise:
>> result = "no data"
> We already have statements that only apply within loops (break and
> continue), how about some expressions that only apply in for loops:
> 'last' and 'empty':
>
> for x in items:
> result += str(x)
> if not last:
> result += ', '
> else:
> if empty:
> result = "no data"
>
> -bruce (not to be confused with Bruce :-)
I don't know. I don't like either. What about named loops/loop objects? Using
this you have no need for new keywords:
myloop = for x in items:
result += str(x)
if not myloop.last:
result += ', '
if myloop.empty:
result = 'no data'
However, how to calculate the last property for generators where it might depend
on some side effects if it's really the last item?
Other things would be possible, too:
a = for x in xs:
b = for y in ys:
c = for z in zs:
if cond(z):
break b
if cond(y):
continue a
However, this would increase clutter and might be a bad idea for the same reason
goto is a bad idea. I also would be possible to pass the loop object to another
function which then might call continue/break which changes the controlflow
completely and makes the code very hard to read. So I guess this is a bad idea.
-panzi
More information about the Python-ideas
mailing list