python中itertools模块zip_longest函数详解
最近在看流畅的python,在看第14章节的itertools模块,对其itertools中的相关函数实现的逻辑的实现
其中在zip_longest(it_obj1,...,it_objN,fillvalue=None)时,其函数实现的功能和内置zip函数大致相同(实现一一对应),
不过内置的zip函数是已元素最少对象为基准,而zip_longest函数是已元素最多对象为基准,使用fillvalue的值来填充
以下是自己总结此函数的大致实现方法,和官方方法不同:
思路大致如此:找出元素个数最多==>算出元素个数差值==>填充差值个元素到各个对象
defzip_longest(*it,**kwargs):
its={k:len(k)forkinit}#这里我是用字典把参数对象和参数的元素个数结果作为一个字典
max_num=max(its.values())#确定迭代对象元素最大值
result=[]#
fillvalue=kwargs.get('fillvalue',None)#元素较少的填充值
forxinrange(max_num):#已最大次为基准循环
result=[]
foritinits:#循环所有迭代对象,以便进行填充数据
element=list(it)#将
iflen(it)
测试其结果:
res=zip_longest('abc','12')
forxinres:
print(x)
结果为:
('a','1')
('b','2')
('c',None)
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。