Python迭代器模块itertools使用原理解析


Posted in Python onDecember 11, 2019

这篇文章主要介绍了Python迭代器模块itertools使用原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

介绍

今天介绍一个很强大的模块,而且是python自带的,那就是itertools迭代器模块。

使用

使用起来很简单,先导入模块

import itertools

下面,我们通过一些例子边学边练

三个无限迭代器

先告诉大家 control + C 可以强制停止程序哦

1.count()

num = itertools.count(10)
for i in num:
    print(i)
# 10
# 11
# 12
# 13
# 以此类推,无穷无尽

2.cycle()

letter = itertools.cycle('ABC')
for i in letter:
    print(i)
# A
# B
# C
# A
# B
# 依次循环,无穷无尽

3.repeat()

rp = itertools.repeat('X')
for i in rp:
    print(i)

# X
# X
# X
# 依次类推,无穷无尽

rp2 = itertools.repeat('X', 2) # 限制2次
for i in rp2:
    print(i)

# X
# X

想要限制迭代的次数还有一个办法,就是使用takewhile

num2 = itertools.takewhile(lambda x: x < 15, num)
list(num2)
# [10,11,12,13,14]

可以用来把几个迭代器合起来,构成一整个迭代器

for c in itertools.chain('AB', 'CD'):
    print(c)
# A
# B
# C
# D

groupby()

可以把重复的元素group起来

for key, group in itertools.groupby('AAABBCCB'):
    print(key, list(group))

# A ['A', 'A', 'A']
# B ['B', 'B', 'B]
# C ['C', 'C']

# 注意这里是区分大小写的,如果要忽略
# 请使用 itertools.groupby('AAABBCCB', lambda c: c.upper())

accumulate

累加

x = itertools.accumulate(range(5))
print(list(x))
# [0, 1, 3, 6, 10, 15]

tee

可以将一个迭代器拆分为n个迭代器

a = [1,2,3,4,5]
x1, x2, x3 = itertools.tee(a,3)

# 产生了三个元素和a一样的iter

combinations

求列表或生成器中指定数目的元素不重复的所有组合

x = itertools.combinations(range(4), 3)
print(list(x))
# [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]

compress

按照真值表筛选元素

x = itertools.compress(range(5), (True, False, True, True, False)) # 0,1,2,3,4,5
print(list(x))
# [0, 2, 3]

filterfalse

保留对应真值为False的元素

x = itertools.filterfalse(lambda n: n < 5, (1, 2, 5, 3, 7, 10, 0))
print(list(x))
# [5, 7, 10]

islice

对迭代器进行切片,参数分别是iter,start,end, step

x = itertools.islice(range(10), 0, 9, 2)
print(list(x))
# [0, 2, 4, 6, 8]

product

产生类似笛卡尔积

x = itertools.product('ABC', range(3))
print(list(x))
# [('A', 0), ('A', 1), ('A', 2), ('B', 0), ('B', 1), ('B', 2), ('C', 0), ('C', 1), ('C', 2)]

zip_longest(*iterables, fillvalue=None)

创建一个迭代器,从每个可迭代对象中收集元素。如果可迭代对象的长度未对齐,将根据 fillvalue 填充缺失值。迭代持续到耗光最长的可迭代对象。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
Django使用HttpResponse返回图片并显示的方法
May 22 Python
Python提取频域特征知识点浅析
Mar 04 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
用python爬取历史天气数据的方法示例
Dec 30 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
Python实现动态循环输出文字功能
May 07 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
python实现进度条的多种实现
Apr 29 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 #Python
Python partial函数原理及用法解析
Dec 11 #Python
opencv3/python 鼠标响应操作详解
Dec 11 #Python
通过实例简单了解Python中yield的作用
Dec 11 #Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 #Python
centos7中安装python3.6.4的教程
Dec 11 #Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 #Python
You might like
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
js表数据排序 sort table data
2009/02/18 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
vue-loader教程介绍
2017/06/14 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
jQuery回调方法使用示例
2017/06/26 jQuery
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
Python绘制3D图形
2018/05/03 Python
python实现定时提取实时日志程序
2018/06/22 Python
flask-restful使用总结
2018/12/04 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
为什么说python更适合树莓派编程
2020/07/20 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
体育课课后反思
2014/04/24 职场文书
毕业生实习证明
2014/09/19 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
建国大业观后感600字
2015/06/01 职场文书
保护环境建议书作文300字
2015/09/14 职场文书