On Sat, Oct 16, 2021, 12:08 PM Steven D'Aprano

> unpacking in *comprehensions*.
>
>     # not currently permitted
>     [*s for s in ["abc", "def", "ghi"]]
>
> > Moreover, it is an anti-pattern to create large and indefinite
> sized tuples,
>
> Is it? In what way?
>

As mentioned, I clipped the wrong part.

That said, even `(*it1, *it2, *it3)` feels like an anti-pattern in most
cases,  although syntactically defined. A hypothetical "tuple
comprehension" seems that much worse.

I'm not making any claims about tuple creation speed vs. list creation on
microbenchmarks. It might we'll be 10% faster to create a million item
tuple than a million item list. Or maybe the opposite, I don't know.

Rather, I'm concerned with readability and programmer expectations. Tuples
are best used as "records" of heterogeneous but structured data. This is
what makes namedtuples such an elegant extension. When I see a collection
of tuples, I generally expect each to have the same "shape", such as a
string at index 0, a float at index 1, and an int at index 2. If those
positions have attribute names, so much the better.

In contrast, lists (and iterators) I expect to contain many things that are
"the same" in a duck-type way. I usually want to loop through them and
perform the same operation on each (maybe with some switches, but in the
same block).

Having a million such similar items is commonplace. Having a million
*fields* is non-existent.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/M534EOJIH4GOSQMTMNQAFSCRJGOCZCKT/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to