[Python-ideas] Fwd: Fwd: unpacking generalisations for list comprehension
Greg Ewing
greg.ewing at canterbury.ac.nz
Sat Oct 15 06:29:21 EDT 2016
Steven D'Aprano wrote:
> t = (1, 2, 3)
> iterable = [t]
> [*t for t in iterable]
>
> If you do the same manual replacement, you get:
>
> [1, 2, 3 for t in iterable]
Um, no, you need to also *remove the for loop*, otherwise
you get complete nonsense, whether * is used or not.
Let's try a less degenerate example, both ways.
iterable = [1, 2, 3]
[t for t in iterable]
To expand that, we replace t with each of the values
generated by the loop and put commas between them:
[1, 2, 3]
Now with the star:
iterable = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
[*t for t in iterable]
Replace *t with each of the sequence generated by the
loop, with commas between:
[1,2,3 , 4,5,6 , 7,8,9]
> Maybe your inability to look past your assumptions and see things from
> other people's perspective is just as much a blind spot as our inability
> to see why you think the pattern is obvious.
It's obvious that you're having difficulty seeing what
we're seeing, but I don't know how to explain it any
more clearly, I'm sorry.
--
Greg
More information about the Python-ideas
mailing list