我们知道,当我们有两个长度一样的列表的时候,可以使用 zip
快速把它组合起来。例如:
>>> a = [1, 2, 3, 4]
>>> b = ['x', 'y', 'x', 'w']
>>> c = list(zip(a, b))
>>> c[(1, 'x'), (2, 'y'), (3, 'x'), (4, 'w')]
那么,Python有没有 unzip
呢?如果我现在给你一个包含二元组的列表,如何把每一个二元组拆开?
例如,我给你:
[(1, 'x'), (2, 'y'), (3, 'x'), (4, 'w')]
我需要你返回给我两个列表 a
和 b
,使得:
a的值为 [1,2,3,4],
b的值为 ['x','y','x','w']
肯定有同学会这样写:
c = [(1, 'x'), (2, 'y'), (3, 'x'), (4, 'w')]
a = []
b = []
for x in c:
a.append(x[0])
b.append(x[1])
print(a)
print(b)
那么有没有简单一点的办法呢?
实际上是有的,我们来看看:
>>> c = [(1, 'x'), (2, 'y'), (3, 'x'), (4, 'w')]
>>> a, b = zip(*c)
>>> a(1, 2, 3, 4)
>>> b('x', 'y', 'x', 'w')
就这么简单,不需要循环,再用一次zip,就能把二元组直接拆开了。