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