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如何import文件夹下的文件(实现方法)
Jan 24 Python
Python实现选择排序
Jun 04 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
python实现随机梯度下降法
Mar 24 Python
Python pymongo模块常用操作分析
Sep 01 Python
python3 实现验证码图片切割的方法
Dec 07 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
django foreignkey(外键)的实现
Jul 29 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
Python基于requests实现模拟上传文件
Apr 21 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
Python接口自动化测试框架运行原理及流程
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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
jquery 手势密码插件
2017/03/17 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
婚前协议书范本
2014/04/15 职场文书
党员批评与自我批评
2014/10/15 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
故意杀人案辩护词
2015/05/21 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
关于做家务的心得体会
2016/01/23 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python