Lennart Regebro wrote: > On Tue, Mar 22, 2011 at 22:12, Steven D'Aprano <steve at 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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4