zip打包元素为元组
zip()
函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。
如果各个可迭代对象的元素个数不一致,则返回的对象长度与最短的可迭代对象相同。
利用 *
号操作符,与zip相反,进行解压。
Python3中返回的是一个对象,如果想要得到列表,可以用 list()
函数进行转换。
打包
- 从参数中的多个迭代器取元素组合成一个新的迭代器;
- 返回返回一个zip对象,其内部元素为元组;可以转化为列表或元组;
- 传入参数:元组、列表、字典等迭代器。
-
当zip()函数中只有一个参数时
zip(iterable)
从iterable中依次取一个元组,组成一个元组。
a = [1, 2, 3]
b1 = [4, 5, 6]
b2 = [4, 5, 6, 7, 8]
a1 = zip(a)
print(a1, list(a1)) # <zip object at 0x0000021D11AAC788> [(1,), (2,), (3,)]
ab1 = zip(a, b1)
print(ab1, list(ab1)) # <zip object at 0x000002952D1FB848> [(1, 4), (2, 5), (3, 6)]
ab2 = zip(a, b2) # 元素数量不同,按少的计算
print(ab2, list(ab2)) # <zip object at 0x00000247020FB948> [(1, 4), (2, 5), (3, 6)]
解包
*zip()
函数是zip()
函数的逆过程,将zip对象变成原先组合前的数据。
z1 = zip(*zip(a, b1)) # 解压
print(z1, list(z1)) # <zip object at 0x000001EC4464C988> [(1, 2, 3), (4, 5, 6)]
z = [(1, 2, 3), ('a', 'b', 'c'), (4, 5, 6)]
print(list(zip(*z))) # [(1, 'a', 4), (2, 'b', 5), (3, 'c', 6)]
网友评论