[Python-ideas] Change how Generator Expressions handle StopIteration
yotam vaknin
tomirendo at gmail.com
Sat Nov 1 15:56:12 CET 2014
Hi,
I would like to purpose that generator expressions will not catch
StopIteration exception, if this exception did not come from the iterated
object's __next__ function specifically. So generator expressions will be
able to raise StopIteration by calculating the current value of the
Generator.
Here is an example of a use-case :
def izip(*args):
iters = [iter(obj) for obj in args]
while True:
yield tuple(next(it) for it in iters)
a = izip([1,2],[3,4])
print(next(a),next(a),next(a)) #Currently prints : (1, 3) (2, 4) ()
list(izip([1,2],[3,4])) #Currently never returns
Even thought this is the PEP described behaviour, I think this is an
unwanted behaviour.
I think Generator Expressions should work like List Comprehension in that
sense:
def iizip(*args):
iters = [iter(obj) for obj in args]
while True:
yield tuple([next(it) for it in iters])
tuple(iizip([1,2],[3,4])) #Returns [(1, 3), (2, 4)]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20141101/a845c53d/attachment.html>
More information about the Python-ideas
mailing list