python中itertools模块zip_longest函数详解


Posted in Python onJune 12, 2018

最近在看流畅的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)

Python 相关文章推荐
python执行外部程序的常用方法小结
Mar 21 Python
详解Python中find()方法的使用
May 18 Python
Python的Django框架中的Context使用
Jul 15 Python
python爬取网易云音乐评论
Nov 16 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
详解python:time模块用法
Mar 25 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
python模块如何查看
Jun 16 Python
教你用Python写一个植物大战僵尸小游戏
Apr 25 Python
宝塔更新Python及Flask项目的部署
Apr 11 Python
Python subprocess模块常见用法分析
Jun 12 #Python
python 基本数据类型占用内存空间大小的实例
Jun 12 #Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 #Python
使用Python进行QQ批量登录的实例代码
Jun 11 #Python
python中使用psutil查看内存占用的情况
Jun 11 #Python
Python运维之获取系统CPU信息的实现方法
Jun 11 #Python
python 实时得到cpu和内存的使用情况方法
Jun 11 #Python
You might like
编写PHP的安全策略
2006/10/09 PHP
Adodb的十个实例(清晰版)
2006/12/31 PHP
php 过滤危险html代码
2009/06/29 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
详解PHP归并排序的实现
2016/10/18 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
Python验证企业工商注册码
2015/10/25 Python
python版学生管理系统
2018/01/10 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
python实现贪吃蛇小游戏
2020/03/21 Python
PyTorch中的C++扩展实现
2020/04/02 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
跟单文员的岗位职责
2013/11/14 职场文书
数学专业推荐信范文
2013/11/21 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
市场营销毕业求职信
2014/08/07 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
MySQL池化框架学习接池自定义
2022/07/23 MySQL