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实现感知器模型、两层神经网络
Dec 19 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
实例讲解Python中整数的最大值输出
Mar 17 Python
详解python tkinter教程-事件绑定
Mar 28 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
python绘制规则网络图形实例
Dec 09 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
Python Web项目Cherrypy使用方法镜像
Nov 05 Python
python 装饰器重要在哪
Feb 14 Python
python自然语言处理之字典树知识总结
Apr 25 Python
python 中的jieba分词库
Nov 23 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
smarty简单入门实例
2014/11/28 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
php实现多城市切换特效
2015/08/09 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
三级下拉菜单的js实现代码
2011/05/23 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
python的三目运算符和not in运算符使用示例
2014/03/03 Python
Python中的闭包详细介绍和实例
2014/11/21 Python
Python找出9个连续的空闲端口
2016/02/01 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
python文件操作的简单方法总结
2019/11/07 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
法学函授自我鉴定
2014/02/06 职场文书
中考冲刺决心书
2014/03/11 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
年终晚会活动方案
2014/08/21 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
建党伟业电影观后感
2015/06/01 职场文书
永不妥协观后感
2015/06/10 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
如何理解及使用Python闭包
2021/06/01 Python