逆向切分由Python zip函数合并的列表
This is cool!
Suppose that you have a list with tuples as the member.
1 >>> test = [('x',1), ('y',2), ('z',3)]
We can unzip the list by using zip() in conjunction with the * operator.
1
2
3
4
5
6
7
8
9 >>> a, b = zip(*test)
>>> a
('x', 'y', 'z')
>>> b
(1, 2, 3)
这里涉及到函数星号参数的用法。一个参数加上星号,就表明这一个列表参数,被拆分成len(l)个独立参数传递给函数;如果参数是个字典,就要用两个星号func(**dict),这时dict的每个键值对都是一个独立的参数,字典有多长,就有多少个独立参数。也因此,上面的unzip代码相当于把一个zip过的列表每一个元素(这里是一个1×2的tuple)分别传递给zip函数,这样zip受到了zip(test[0],test[1],test[2])三个参数,每个参数都是一个tuple,zip后所有元素的第一个值组成了一个新的列表,第二个值组成了第二个列表b,结果就是我们把已经拉上的拉链又打开了。很妙!
转载请注明来自9rivers。

Leave a Reply