Python模块---zip打包元素为元组

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)]

猜你喜欢

转载自blog.csdn.net/weixin_34408717/article/details/86843679