python中itertools模块zip_longest函数详解

作者:牛奶i豆浆 时间:2023-01-02 09:09:35 

最近在看流畅的python,在看第14章节的itertools模块,对其itertools中的相关函数实现的逻辑的实现

其中在zip_longest(it_obj1, ..., it_objN, fillvalue=None)时,其函数实现的功能和内置zip函数大致相同(实现一一对应),

不过内置的zip函数是已元素最少对象为基准,而zip_longest函数是已元素最多对象为基准,使用fillvalue的值来填充

以下是自己总结此函数的大致实现方法,和官方方法不同:

思路大致如此: 找出元素个数最多 ==>算出元素个数差值==>填充差值个元素到各个对象


def zip_longest(*it, **kwargs):
 its = {k: len(k) for k in it}   # 这里我是用字典把参数对象和参数的元素个数结果作为一个字典
 max_num = max(its.values())    # 确定迭代对象元素最大值
 result = []            #
 fillvalue = kwargs.get('fillvalue', None) # 元素较少的填充值
 for x in range(max_num):     # 已最大次为基准循环
   result = []
   for it in its:        # 循环所有迭代对象,以便进行填充数据
     element = list(it)    # 将
     if len(it) < max_num:   # 如果迭代对象的元素个数比最大值小,则要填充数据
       for i in range(max_num - len(it)): # 此为要填充数据的个数
         element.append(fillvalue)    # 填充操作,完成后所有的迭代对象的元素个数都为一致    
     result.append(element[x])        # 生成一一对应结果,存放到list中
   yield tuple(result)             # 将结果输出

测试其结果:


res = zip_longest('abc', '12')
for x in res:
 print(x)

结果为:

('a', '1')
('b', '2')
('c', None)

来源:http://blog.51cto.com/smly1989/2128100

标签:python,itertools
0
投稿

猜你喜欢

  • 实现Windows下设置定时任务来运行python脚本

    2021-10-12 05:03:32
  • Python类如何定义私有变量

    2023-04-18 11:23:23
  • 合并ThinkPHP配置文件以消除代码冗余的实现方法

    2023-11-21 11:54:31
  • 一文吃透Go的内置RPC原理

    2024-02-03 08:45:53
  • php中get_meta_tags()、CURL与user-agent用法分析

    2024-05-02 17:32:52
  • Python plt 利用subplot 实现在一张画布同时画多张图

    2021-02-04 02:50:17
  • Python基于Floyd算法求解最短路径距离问题实例详解

    2022-05-23 09:45:47
  • python绘制评估优化算法性能的测试函数

    2022-10-18 20:13:20
  • python中的Pyperclip模块功能详解

    2021-10-25 05:28:22
  • DreamweaverMX2004技巧两则

    2010-09-05 21:10:00
  • JS图片根据鼠标滚动延时加载的实例代码

    2024-04-22 13:22:33
  • BootStrap 页签切换失效的解决方法

    2024-04-19 09:52:28
  • 讲述SQL Server数据转换服务小妙招

    2010-07-26 14:43:00
  • YUI学习笔记(3)

    2009-01-21 16:24:00
  • Python求导数的方法

    2023-11-22 07:51:15
  • 马化腾关于产品设计与用户体验的培训

    2009-02-12 11:45:00
  • django配置DJANGO_SETTINGS_MODULE的实现

    2023-06-18 20:14:26
  • 详解Python爬取并下载《电影天堂》3千多部电影

    2023-07-07 23:48:24
  • 基于Python实现自动化生成数据报表

    2021-11-07 00:42:16
  • javascript设计模式 – 原型模式原理与应用实例分析

    2024-04-22 13:26:50
  • asp之家 网络编程 m.aspxhome.com