Python使用zip合并相邻列表项的方法示例


Posted in Python onMarch 17, 2018

本文实例讲述了Python使用zip合并相邻列表项的方法。分享给大家供大家参考,具体如下:

1》使用zip()函数和iter()函数,来合并相邻的列表项

>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> zip(*[iter(x)]*2)
[(1, 2), (3, 4), (5, 6), (7, 8)]
>>> zip(*[iter(x)]*3)
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> zip(*[iter(x)]*4)
[(1, 2, 3, 4), (5, 6, 7, 8)]

之所以会出现上述结果,是因为:

>>> [iter(x)]*3
[<listiterator object at 0x02F4D790>, <listiterator object at0x02F4D790>, <listiterator object at 0x02F4D790>]

可以看到,列表中的3个迭代器实际上是同一个迭代器!!!

2》   在1》的基础上,封装成一个函数,如下:

>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> group_adjacent = lambda a, k: zip(*([iter(a)] * k))
>>> group_adjacent(x,3)
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> group_adjacent(x,2)
[(1, 2), (3, 4), (5, 6), (7, 8)]
>>> group_adjacent(x,1)
[(1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,), (9,)]

3》使用zip()函数和切片操作,来合并相邻的表项

>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> zip(x[::2],x[1::2])
[(1, 2), (3, 4), (5, 6), (7, 8)]
>>> zip(x[0::2],x[1::2])
[(1, 2), (3, 4), (5, 6), (7, 8)]
>>> zip(x[0::3],x[1::3],x[2::3])
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> zip(x[::3],x[1::3],x[2::3])
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

4》  在3》的基础上,封装成函数,如下:

>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> group_adjacent = lambda a, k: zip(*[a[i::k] for i in range(k)])
>>> group_adjacent(x,3)
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> group_adjacent(x,2)
[(1, 2), (3, 4), (5, 6), (7, 8)]
>>> group_adjacent(x,1)
[(1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,), (9,)]

参考文章:

python zip()函数https://3water.com/article/136589.htm

python iter()函数https://3water.com/article/136587.htm

python lambda函数基础https://3water.com/article/136557.htm

python切片操作https://3water.com/article/136553.htm

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
怎样使用Python脚本日志功能
Aug 14 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
WxPython建立批量录入框窗口
Feb 27 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
python能做哪方面的工作
Jun 15 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
python Yaml、Json、Dict之间的转化
Oct 19 Python
python实现简单猜单词游戏
Dec 24 Python
浅谈Python基础之列表那些事儿
May 11 Python
Python zip()函数用法实例分析
Mar 17 #Python
Python iter()函数用法实例分析
Mar 17 #Python
Python callable()函数用法实例分析
Mar 17 #Python
Python matplotlib绘图可视化知识点整理(小结)
Mar 16 #Python
python中matplotlib的颜色及线条控制的示例
Mar 16 #Python
Python lambda函数基本用法实例分析
Mar 16 #Python
Python切片操作实例分析
Mar 16 #Python
You might like
php连接数据库代码应用分析
2011/05/29 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
php array的学习笔记
2012/05/10 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
javascript设计模式 接口介绍
2012/07/24 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
简单了解django orm中介模型
2019/07/30 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
《值日生》教学反思
2014/02/17 职场文书
《口技》教学反思
2014/02/21 职场文书
小学生秋游活动方案
2014/02/23 职场文书
2014年两会学习心得体会
2014/03/17 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
JS实现数组去重的11种方法总结
2022/04/04 Javascript