Lennart Regebro wrote:
On Tue, Mar 22, 2011 at 22:12, Steven D'Aprano <st...@pearwood.info> wrote:
The main one that comes to my mind is that other than looping, any time I
want to process dict.items() etc I often need to call list() first.

"Process" no. If you want it to be a list, yes. This is because they
now return generators, which is a massive improvement.

Well, yes, that's what I meant when I said other than looping. (I'm aware that there are uses for lazy iterators other than for-loops.)

But the improvement is exactly what Anatoly is talking about: it's an improvement in speed over user convenience. If all you are doing is iterating over a moderately-sized dictionary, you probably don't care whether items() etc. returns a list or an iterator. But if you want to take those items away and do something with them, you need a list, and that's ever-so-slightly less convenient now than it was.

To be clear, I'm *not* objecting to this state of affairs. I think the trade-off in this case is the right thing to do. But Anatoly seems to think that Python3 has generally made the wrong trade-off, and I was hoping he would mention some other concrete examples.


For the record, this next double-quoted >> statement is not by me. It was actually from Anatoly Techtonik:

but what I really
didn't expect is to see that choice is made not in user's favor, but
in a favor of speed.

I'm not sure what choice you are talking of here... And in this case
Python 2 behaved differently on different platforms and Python 3
doesn't. That seems to be an improvement to me...


Lennart, please be a little more careful with your attributions.




--
Steven
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to