Python的itertools模块
时间:2022-05-06
本文章向大家介绍Python的itertools模块,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本章将介绍Python自建模块
itertools
,更多内容请参考:Python参考指南
python的自建模块itertools
提供了非常有用的用于操作迭代对象的函数。
首先,我们看看itertools
提供的几个无限
迭代器:
>>>import itertools
>>>natuals = itertools.count(1)
>>>for n in natuals:
print(n)
1
2
3
...
因为count()
会创建一个无限的迭代器,所以上述代码会打印出自然数序列,根本停不下来,只能Ctrl+C
退出。
cycle()
会把传入的一个序列无限重复下去:
>>>import itertools
>>>cs = itertools.cycle('ABC')
>>>for c in cs:
print(c)
'A'
'B'
'C'
'A'
'B'
'C'
repeat()
负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数:
>>>ns = itertools.repeat('A', 3)
>>>for n in ns:
print(n)
A
A
A
无限序列只有在for
迭代时才会无限地迭代下去,如果只是创建了一个迭代对象,它不会事先把无限个元素生成出来,事实上也不可能在内存中创建无限个元素。
>>>natuals = itertools.count(1)
>>>ns = itertools.takewhile(lambda x: x <= 10, natuals)
>>>list(ns)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
itertools
提供的几个迭代器操作函数更加有用:
chain()
chain()
可以把一组迭代对象串联起来,形成一个更大的迭代器:
>>>for c in itertools.chain('ABC', 'XYZ'):
print(c)
#迭代效果:'A', 'B', 'C', 'X', 'Y', 'Z'
groupby()
groupby()
把迭代器中相邻的重复元素挑出来
>>> for key, group in itertools.groupby('AAABBBCCAAA')
>>> print(key, list(group))
A ['A', 'A', 'A']
B ['B', 'B', 'B']
C ['C', 'C']
A ['A', 'A', 'A']
实际上挑选规则时通过函数完成的,只要作用与函数的两个元素返回的值相等,这个元素就被认为是在一起的,而函数返回值作为组的key。如果我们要忽略大小写分组,就可以让元素A
和a
都返回相同的key:
>>>for key, group in itertools.groupby('AaaBBbcCAAa', lambda c: c.super()):
print(key, list(group))
A ['A', 'a', 'a']
B ['B', 'B', 'b']
C ['c', 'C']
A ['A', 'A', 'a']
小结
itertools
模块提供的全部是处理迭代功能的函数,它们的返回值不是list
,而是Iterator
,只有用for
循环迭代的时候才真正计算。
- 建立安全的 AI
- Python NLTK 自然语言处理入门与例程
- 漏洞预警 | Apache Struts2 曝任意代码执行漏洞 (S2-045,CVE-2017-5638)
- 详解OSSIM-OSSEC WIN 4771案例
- JSShell:一个基于python的交互式Shell
- golang中操作excel
- 企业安全漏洞通告引擎
- 通过httprouter和redis框架搭建restful api服务
- .NET Core 实现定时抓取博客园首页文章信息并发送到邮箱
- 基于 R 语言和 SPSS 的决策树算法介绍及应用
- Android 8.0 中的安全增强功能
- python2 群发 html 或文本邮件
- windows 安装 storm 及 eclipse 调试 TopN 实例
- shell 学习笔记(16)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在 Windows 系统上配置 Apache Git 服务器
- WMCTF2020 部分Writeup&招新帖
- 【DB宝15】生产环境中,如何利用DG的备库来异机还原一个新库?
- Java命令执行学习笔记
- SAP UI5应用DatePicker控件的设计明细
- 如何根据自己的实际需求开发属于自己的sublime text插件
- Sony Z13 系列笔记本安装 NVIDIA 官方最新版显卡驱动程序
- 通过网页进行 iOS 应用内部分发
- 【DB笔试面试853】在Oracle中,什么是手动建库?手动建库有哪些步骤?
- 使用 Intel HAXM 为 Android 模拟器加速,媲美真机
- NHibernate 使用 SqlQuery
- 谈谈 INotifyPropertyChanged 的实现
- C 语言小知识
- 使用代码配置 NHibernate
- [Introduction]Go特殊的引用类型:值传递/指针传递/引用传递