Python的内建模块itertools
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
迭代时才会无限地迭代下去,如果只是创建了一个迭代对象,它不会事先把无限个元素生成出来,事实上也不可能在内存中创建无限多个元素。
无限序列虽然可以无限迭代下去,但是通常我们会通过takewhile()
等函数根据条件判断来截取出一个有限的序列:
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.upper()): print(key, list(group)) ... A ['A', 'a', 'a'] B ['B', 'B', 'b'] C ['c', 'C'] A ['A', 'A', 'a']
转载于:https://www.cnblogs.com/bruce0425/p/8277746.html
Python的内建模块itertools相关推荐
- 四十六 常用内建模块 itertools
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个"无限"迭代器: >>> import ...
- Python常用内建模块(内含实例)
文章目录 datetime 获取当前日期和时间 获取指定日期和时间 datetime转化为timestamp timestamp转化为datetime str转化为datetime datetime转 ...
- Python中内建模块collections常见用法总结
1.Counter Counter是字典对象的一个子类.Counter()函数是collections模块中的函数,它接收一个可迭代对象,例如list.tuple等,返回一个Counter字典.返回C ...
- Python常用内建模块——学习笔记
1.datetime:Python处理日期和时间的标准库 引入方法: from datetime import datetime. 第一个datetime是模块,第二个datetime是类. 如果仅导 ...
- python【数据结构与算法】内建模块itertools(操作迭代对象)
文章目录 1 permutations方法 2 combination方法 3 总结 1 permutations方法 >>> s=[1,2,3] >>> impo ...
- python自带intertool模块找不到_介绍Python中内置的itertools模块
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个"无限"迭代器: >>> import ...
- Python学习笔记:常用内建模块4:hmac
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python3 内建模块 hashlib、itertools、HTMLParser、urllib
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制 ...
- python的标准类型内建模块有_python的常用内建模块与常用第三方模块
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 一.常用内置模块 1.datetime Python 提供了一个 time 和 calendar 模 ...
最新文章
- Android_CodeWiki_01
- linux成长笔录——week_1
- tp3.2.3实现后台的顶部栏目查询,不用拼接sql
- MySQL数据库常见面试题总结
- 上大学后男生的两种变化
- 演练 网站的导航栏 0920
- 寻找素数分配线程算法
- python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例
- XStream---Java对象和XML之间的转换器
- 控制理论导论_生活 amp; 工作 amp; 科研 amp; 控制理论与实践
- revit二次开发概念_Revit二次开发教程:BIM自学入门Revit二次开发
- linux改d5000默认路径,linux相关指令和d5000基础操作.pdf
- java中23%5_23.5 jumpserver介绍
- Python爬虫爬取中国大学慕课MOOC课程的课程评价信息(讨论信息),采用selenium动态爬取方法
- 故事板(Storyboard)
- java——API——ArrayList集合
- Data Analysis - Day9 - Numpy Functions
- Elasticsearch高级操作 (关键字精确查询)
- Webstorm提示This license K71U8DBPNE has been cancelled
- 图像处理之直方图均衡化
热门文章
- CC攻击(N个免费代理形成的DDOS)
- 从零开始学PowerShell(9)创建PowerShell对象
- JS 查看标签下某元素所有信息(查看元素,查询元素,遍历元素、HTMLCollection对象、NodeList对象)
- Python内置函数——__import__ 的使用方法
- python-nmap使用及案例
- N - Dragon Balls(并查集+深度的意义
- elipse安装php
- install maven3 on ubuntu
- CV 里程计、推算定位与视觉里程计 简介
- 大龄程序员想转产品经理?3本书给你最靠谱的进阶攻略