On Thu, Jun 17, 2021 at 02:22:29PM -0700, Ben Rudiak-Gould wrote:
> [*chunk for chunk in list_of_lists]
What would that do?
The difference between chunk and *chunk in the expression of a list comprehension would be the same as the difference between them in the expressions of a starred_list.
The only thing I can guess it would do is the
equivalent of:
result = []
for chunk in list_of_lists:
result.append(*chunk)
which is a long and obfuscated way of saying `raise TypeError` :-)
It would be reasonable to allow list.append to take any number of arguments to be appended to the list, as though its definition was
def append(self, *args):
self.extend(args)
If it did, then that translation would work and do the right thing.
Some similar functions do accept multiple arguments as a convenience, though it's not very consistent:
myset.add(1, 2) # no
myset.update([1, 2], [3, 4]) # ok
mylist.extend([1, 2], [3, 4]) # no
mydict.update({'a': 1}, b=2, c=3) # ok
mydict.update({'a': 1}, {'b': 2}, c=3) # no
Well, there is this:
result = []
for chunk in list_of_lists:
*temp, = chunk
result.append(temp)
which would make it an obfuscated way to spell `list(chunk)`.
Unpacking would be useless in every context if you interpreted it like that.