python中的一些奇技淫巧(持续更新)

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()本质无区别,但实现的功能恰恰相反,有意思!

猜你喜欢

转载自blog.csdn.net/Wzz_Liu/article/details/81321412