On 18.10.2016 08:23, Greg Ewing wrote:
If it were a namedtuple, for example, you could write
[*t for t in fulltext_tuples if t.language == 'english']
or
[x for t in fulltext_tuples if t.language == 'english' for x in t]
The latter is a bit unsatisfying, because we are having to make up an arbitrary name 'x' to stand for an element of t. Even though the two elements of t have quite different roles, we can't use names that reflect those roles.
It's an intriguing idea to use namedtuples but in this case one should not over-engineer. What I dislike most are the names of "fulltext_tuple", "x", "t". If I were to use it, I think my coworkers would tar and feather me. ;) This is one of the cases where it makes absolutely no sense to invent artificial names for the sake of naming. I can name a lot of (internal) examples where we tried really hard at inventing named concepts which make absolutely no sense half a year later even to those who invented them. Repeatedly, in the same part of the code. Each newly named concept introduces another indirection. Thus, we always need to find a middle ground between naming and using language features, so I (personally) would be grateful for this particular feature. :)
Because of that, to my eyes the version with * makes it easier to see what is going on.
That's a very nice phrase: "makes it easier to see what is going on". I need to remember that. Cheers, Sven