+ 11
How it works
*x, y = [1,2],[3,4],[5,6] print(list(zip(*x+[y] ))) >>>[1,3,5],[2,4,6] I don’t understand what happens when * x and y are added. What arguments does the zip function get? After all, this function should receive two arguments.
4 ответов
+ 5
The result is wrong. It looks like this:
[(1, 3, 5), (2, 4, 6)] # a list of two tuples
It is a good start if you know what x and y are. Although you are actually not quite right. x is a list of lists which is important for the next step:
x = [[1,2],[3,4]]
In the next step we have the addition of two lists of lists (x + [y]). In such a case the two lists merge. The elements of both lists are put together into a new list leaving us with this:
[[1,2],[3,4],[5,6]]
Using the star-operator * on that list unpacks it into three single lists which are then directly passed into the zip-function giving you the shown result (which btw happens to be the transponded version of the input if you look at it like a 2d-matrix).
But don't worry. In real life people don't do stuff like that. This was just done to make the challenges more difficult.
+ 5
* unpacks a tuple.
zip([1, 2], [3, 4], [5, 6])
combines all three lists to new elements, first taking spots[0], then spots[1]...
+ 4
It did not help. I understand perfectly what x and y are
x =[1, 2],[3,4]
y = [5,6]