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
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/