zip的作用是接受多个输入,将多个输入的内部元素按顺序对应组合起来。
a = [i for i in range(5)] # [0, 1, 2, 3, 4]
b = [i for i in range(5, 10)] # [5, 6, 7, 8, 9]
c = [i for i in range(10, 15)] # [10, 11, 12, 13, 14]
l = list(zip(a, b, c))
print(l)
#[(0, 5, 10), (1, 6, 11), (2, 7, 12), (3, 8, 13), (4, 9, 14)]
*的一种用途是解包,将一个对象拆开,内部元素均成为独立的对象。
l_ = list(zip(*l))
#等价于 l_ = list(zip((0, 5, 10), (1, 6, 11), (2, 7, 12), (3, 8, 13), (4, 9, 14))), 组合5个元素,其中l被拆成了(0, 5, 10), (1, 6, 11), (2, 7, 12), (3, 8, 13), (4, 9, 14)5个对象
print(l_)
# l_ = [(0, 1, 2, 3, 4), (5, 6, 7, 8, 9), (10, 11, 12, 13, 14)]