鱼C论坛

 找回密码
 立即注册
查看: 1907|回复: 1

[技术交流] Python zip() 函数

[复制链接]
发表于 2020-3-16 14:59:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 一个账号 于 2020-3-16 15:16 编辑

Python zip() 函数


语法

  1. zip(*iterable) -> zip object
复制代码


参数

参数描述
*iterable任意个迭代器


描述

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

我们可以使用 list() 转换来输出列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

返回值

返回一个 zip 对象。

例子

  1. >>> zip()
  2. <zip object at 0x0000029B69DA4040>
  3. >>> zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
  4. <zip object at 0x000001A17357D140>
  5. >>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
  6. [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
  7. >>> tuple(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
  8. ((1, 4, 7), (2, 5, 8), (3, 6, 9))
  9. >>> tuple(zip(zip([1, 2, 3], [4, 5, 6], [7, 8, 9])))
  10. (((1, 4, 7),), ((2, 5, 8),), ((3, 6, 9),))
  11. >>> tuple(zip([1, 2, 3]))
  12. ((1,), (2,), (3,))
  13. >>> for i in tuple(zip(["Sunday", "Monday", "Tuesday"], [0, 1, 2])):
  14.         print(i)

  15.        
  16. ('Sunday', 0)
  17. ('Monday', 1)
  18. ('Tuesday', 2)
  19. >>> for week, num in tuple(zip(["Sunday", "Monday", "Tuesday"], [0, 1, 2])):
  20.         print(num, "->", week)

  21.        
  22. 0 -> Sunday
  23. 1 -> Monday
  24. 2 -> Tuesday
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 15:07:42 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-3-16 17:28 编辑

一种可能的实现

  1. class zip:
  2.         def __init__(self,*iterables):
  3.                 self.__iterators=tuple((iter(i) for i in iterables))
  4.        
  5.         def __iter__(self):
  6.                 return self
  7.        
  8.         def __next__(self):
  9.                 return tuple((next(i) for i in self.__iterators))

  10.         def __reduce__(self):
  11.                 return self.__class__,self.__iterators
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 09:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表