On Fri, 18 Aug 2017 04:55 pm, Marko Rauhamaa wrote: > Is a Python implementation > allowed to parallelize or otherwise reorder the evaluation loop?
No. I initially was going to just say "Read the PEP, read the What's New from 2.0, read the docs, notice the deliberate use of the same terminology as for-loops and the similarity to generator expression syntax", but in fact there's a simple demonstration for why list comps are not free to reorder the evaluation. from io import StringIO # simulate reading from a file myfile = StringIO('Is this the room for an argument?') values = [myfile.read(1) for i in range(33)] print(''.join(values)) For all the talk of how people read list comps declaratively without caring about the order the values are computed, if the above code snippet printed: 'nmoe sIsta ret hhna fto?mri rugo' instead of the expected 'Is this the room for an argument?', I believe that we would all agree that behaviour a bug. Perhaps not so much *here*, where we've paid for the full hour[1], but if it happened to us in real-life code, certainly. [1] "I'm sorry, I'm not allowed to argue unless you've paid." -- Steve “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list