1.zip()和zip(*)
a = [[1,2], [3,4], [5,6],[7,8]]
b = ["x1", "x2", "x3", "x4"]
c = list(zip(a,b))
print(c)
d = list(zip(*b))
print(d)
结果:
[([1, 2], 'x1'), ([3, 4], 'x2'), ([5, 6], 'x3'), ([7, 8], 'x4')]
[('x', 'x', 'x', 'x'), ('1', '2', '3', '4')]
可见zip()实现压缩,zip(*)实现解压缩,还有吗?
b = ["xy11", "xy2", "xy3", "xy4"]
d = list(zip(*b))
print(d)
结果:
[('x', 'x', 'x', 'x'), ('y', 'y', 'y', 'y'), ('1', '2', '3', '4')]
可见zip(*)传入,如上例中,把每一个list中的可迭代的元素处理成tuple,这也是*的作用,实际上上例中的zip(*b)等价于
# 实际上上例中的zip(*b)等价于
# zip(("x","y","1","1"), ("x","y","2"),
# ("x","y","3"), ("x","y","4")))
b = ["xy11", "xy2", "xy3", "xy4"]
d = list(zip(*b))
e = list(zip(("x","y","1","1"), ("x","y","2"),
("x","y","3"), ("x","y","4")))
print(d)
print(e)
结果:
[('x', 'x', 'x', 'x'), ('y', 'y', 'y', 'y'), ('1', '2', '3', '4')]
[('x', 'x', 'x', 'x'), ('y', 'y', 'y', 'y'), ('1', '2', '3', '4')]
zip(*)和zip()本质无区别,但实现的功能恰恰相反,有意思!