[Python-3000] The order of list comprehensions and generator expressions (original) (raw)
Noam Raphael noamraph at gmail.com
Sun Sep 16 21:01:29 CEST 2007
- Previous message: [Python-3000] The order of list comprehensions and generator expressions
- Next message: [Python-3000] bytes & Py_TPFLAGS_BASETYPE
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 9/16/07, Guido van Rossum <guido at python.org> wrote:
I think it's not so obvious that reversing the order is any better when you throw in some if clauses:
[friend for city in cities if city.name != "Amsterdam" for friend in city.friends if friend.name != "Guido"] vs. [friend for friend in city.friends if friend.name != "Guido" for city in cities if city.name != "Amsterdam"] --Guido
I think that it's still better, at least if you add some newlines:
[friend (Ok, we are talking about a list of friends. From where do these friends come from?) for friend in city.friends if friend.name != "Guido" (Ah, they are all the friends in a city who aren't called Guido. What about the city?) for city in cities if city.name != "Amsterdam"] (Ah, the city is every city which isn't Amsterdam.)
Versus:
[friend (Ok, we are talking about a list of friends. From where do these friends come from?) for city in cities if city.name != "Amsterdam" (What do cities which aren't Amsterdam have to do with my friend?) for friend in city.friends if friend.name != "Guido"] (Ah, we're talking about all the friends in those cities who aren't called Guido. Let's have a look at the first line to remember what we do with them... ah, yes, we just return them...)
Noam
- Previous message: [Python-3000] The order of list comprehensions and generator expressions
- Next message: [Python-3000] bytes & Py_TPFLAGS_BASETYPE
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]