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妹子图简单爬虫实例
Jul 07 Python
Python实现的多线程http压力测试代码
Feb 08 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
Python中多个数组行合并及列合并的方法总结
Apr 12 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
对python中的float除法和整除法的实例详解
Jul 20 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
Aug 06 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 Python
spyder 在控制台(console)执行python文件,debug python程序方式
Apr 20 Python
keras slice layer 层实现方式
Jun 11 Python
Python+unittest+DDT实现数据驱动测试
Nov 30 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 Memcached应用实现代码
2010/02/08 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
php写app用的框架整理
2019/09/29 PHP
图片按比例缩放函数
2006/06/26 Javascript
prototype class详解
2006/09/07 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
js function定义函数使用心得
2010/04/15 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
如何编写jquery插件
2017/03/29 jQuery
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
使用python爬取B站千万级数据
2018/06/08 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
蛋糕店的商业计划书范文
2014/01/27 职场文书
消防安全汇报材料
2014/02/08 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
事业单位鉴定材料
2014/05/25 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
教师工作表现自我评价
2015/03/05 职场文书
鸦片战争观后感
2015/06/09 职场文书
python如何在word中存储本地图片
2021/04/07 Python
python 调用js的四种方式
2021/04/11 Python
Python实现简单的俄罗斯方块游戏
2021/09/25 Python