大家好,我是老马的程序人生~
zip()
函数是 Python 内置函数之一,通过下面的例子,我们对该函数进行总结。
zip(iter1 [,iter2 [...]])
:用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。
*
:可把zip的数据释放出来,即解压。
x = [11, 12, 13]
y = [21, 22, 23]
zipped = zip(x, y)
print(zipped) # <zip object at 0x00000269D83F2948>
print(type(zipped)) # <class 'zip'>
print(*zipped) # (11, 21) (12, 22) (13, 23)
a, b = zip(*zip(x, y))
print(list(a)) # [11, 12, 13]
print(list(b)) # [21, 22, 23]
可以通过*
来查看打包之后的内容,也可以通过列表推导式来查看打包之后的内容。
【例子】
x = [1, 2, 3]
print(*zip(x)) # (1,) (2,) (3,)
print([x for x in zip(x)]) # [(1,), (2,), (3,)]
【例子】
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
print(*zip(x, y, z)) # (1, 4, 7) (2, 5, 8) (3, 6, 9)
print([x for x in zip(x, y, z)]) # [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
如果各个迭代器的元素个数不一致,那么返回列表长度与最短的对象相同。
【例子】
l = [11, 12, 13]
t1 = (21, 22, 23)
t2 = (21, 22, 23, 24, 25)
print([x for x in zip(l, t1)]) # [(11, 21), (12, 22), (13, 23)]
print([x for x in zip(l, t2)]) # [(11, 21), (12, 22), (13, 23)]
d = {31: 2, 32: 4, 33: 5}
print([x for x in zip(d.keys(), d.values())]) # [(31, 2), (32, 4), (33, 5)]
p = "python"
s = "shell"
print([x for x in zip(p, s)])
# [('p', 's'), ('y', 'h'), ('t', 'e'), ('h', 'l'), ('o', 'l')]
我们可以使用 list()
,tuple()
,dict()
来转换来输出对应的类型。
【例子】
a = [1, 2, 3]
b = [4, 5, 6]
print(list(zip(a, b))) # [(1, 4), (2, 5), (3, 6)]
print(dict(zip(a, b))) # {1: 4, 2: 5, 3: 6}
print(tuple(zip(a, b))) # ((1, 4), (2, 5), (3, 6))
zip(*zipped)
:*zipped
参数,可以list数组(数组中的元素都是可迭代对象),也可以是zip()
函数返回的解压对象。
【例子】
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(*x) # [1, 2, 3] [4, 5, 6] [7, 8, 9]
print(type(zip(*x))) # <class 'zip'>
print(list(zip(*x))) # [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
【例子】
x = ["abc", "def", "ghi"]
print(*x) # abc def ghi
print(type(zip(*x))) # <class 'zip'>
print(list(zip(*x)))
# [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
联系客服