广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于Python 内置库 itertools
  • 321
分享到

关于Python 内置库 itertools

2024-04-02 19:04:59 321人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1、itertools库2、使用itertools3、itertools.accumulate4、itertools.chain5、itertools.combinations_

前言:

最近事情不是很多,想写一些技术文章分享给大家,同时也对自己一段时间来碎片化接受的知识进行一下梳理,所谓写清楚才能说清楚,说清楚才能想清楚,就是这个道理了。

很多人都致力于把python代码写得更Pythonic,一来更符合规范且容易阅读,二来一般Pythonic的代码在执行上也更有效率。今天就先给大家介绍一下Python的系统库itertools

1、itertools库

迭代器(生成器)在Python中是一种很常用也很好用的数据结构,比起列表(list)来说,迭代器最大的优势就是延迟计算,按需使用,从而提高开发体验和运行效率,以至于在Python 3中map,filter等操作返回的不再是列表而是迭代器。

话虽这么说但大家平时用到的迭代器大概只有range了,而通过iter函数把列表对象转化为迭代器对象又有点多此一举,这时候我们今天的主角itertools就该上场了。

2、使用itertools

itertools中的函数大多是返回各种迭代器对象,其中很多函数的作用我们平时要写很多代码才能达到,而在运行效率上反而更低,毕竟人家是系统库。

3、itertools.accumulate

简单来说就是累加。


>>> import itertools  
>>> x = itertools.accumulate(range(10))  
>>> print(list(x))  
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45] 

4、itertools.chain

连接多个列表或者迭代器。


>>> x = itertools.chain(range(3), range(4), [3,2,1])  
>>> print(list(x))  
[0, 1, 2, 0, 1, 2, 3, 3, 2, 1] 
itertools.combinations


求列表或生成器中指定数目的元素不重复的所有组合


>>> x = itertools.combinations(range(4), 3)  
>>> print(list(x))  
[(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)] 

5、itertools.combinations_with_replacement

允许重复元素的组合


>>> x = itertools.combinations_with_replacement('ABC', 2)  
>>> print(list(x))  
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]  

6、itertools.compress

按照真值表筛选元素


>>> x = itertools.compress(range(5), (True, False, True, True, False))  
>>> print(list(x))  
[0, 2, 3] 

7、itertools.count

就是一个计数器,可以指定起始位置和步长


>>> x = itertools.count(start=20, step=-1)  
>>> print(list(itertools.islice(x, 0, 10, 1)))  
[20, 19, 18, 17, 16, 15, 14, 13, 12, 11] 

8、itertools.cycle

循环指定的列表和迭代器


>>> x = itertools.cycle('ABC')  
>>> print(list(itertools.islice(x, 0, 10, 1)))  
['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A'] 

9、itertools.dropwhile

按照真值函数丢弃掉列表和迭代器前面的元素


>>> x = itertools.dropwhile(lambda e: e < 5, range(10))  
>>> print(list(x))  
[5, 6, 7, 8, 9] 

10、itertools.filterfalse

保留对应真值为False的元素


>>> x = itertools.filterfalse(lambda e: e < 5, (1, 5, 3, 6, 9, 4))  
>>> print(list(x))  
[5, 6, 9] 

11、itertools.groupby

按照分组函数的值对元素进行分组


>>> x = itertools.groupby(range(10), lambda x: x < 5 or x > 8)                                                                                               
>>> for condition, numbers in x:                                                 
...     print(condition, list(numbers))                                                                                                         
True [0, 1, 2, 3, 4]                                                               
False [5, 6, 7, 8]                                                                
True [9] 

12、itertools.islice

上文使用过的函数,对迭代器进行切片


>>> x = itertools.islice(range(10), 0, 9, 2)  
>>> print(list(x))  
[0, 2, 4, 6, 8] 

13、itertools.permutations

产生指定数目的元素的所有排列(顺序有关)


>>> x = itertools.permutations(range(4), 3)  
>>> print(list(x))  
[(0, 1, 2), (0, 1, 3), (0, 2, 1), (0, 2, 3), (0, 3, 1), (0, 3, 2), (1, 0, 2), (1, 0, 3), (1, 2, 0), (1, 2, 3), (1, 3, 0), (1, 3, 2), (2, 0, 1), (2, 0,3), (2, 1, 0), (2, 1, 3), (2, 3, 0), (2, 3, 1), (3, 0, 1), (3, 0, 2), (3, 1, 0), (3, 1, 2), (3, 2, 0), (3, 2, 1)] 


14、itertools.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)] 

15、itertools.repeat

简单的生成一个拥有指定数目元素的迭代器


>>> x = itertools.repeat(0, 5)  
>>> print(list(x))  
[0, 0, 0, 0, 0] 

16、itertools.starmap

类似map


>>> x = itertools.starmap(str.islower, 'aBCDefGhI')  
>>> print(list(x))  
[True, False, False, False, True, True, False, True, False]  


17、itertools.takewhile

dropwhile相反,保留元素直至真值函数值为假。


>>> x = itertools.takewhile(lambda e: e < 5, range(10))  
>>> print(list(x))  
[0, 1, 2, 3, 4] 

18、itertools.tee

这个函数我也不是很懂,似乎是生成指定数目的迭代器


>>> x = itertools.tee(range(10), 2)  
>>> for letters in x:  
...     print(list(letters))  
...  
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

19、itertools.zip_longest

类似于zip,不过已较长的列表和迭代器的长度为准


>>> x = itertools.zip_longest(range(3), range(5))  
>>> y = zip(range(3), range(5))  
>>> print(list(x))  
[(0, 0), (1, 1), (2, 2), (None, 3), (None, 4)]  
>>> print(list(y))  
[(0, 0), (1, 1), (2, 2)] 

结语:

到此这篇关于关于Python 内置库 itertools的文章就介绍到这了,更多相关Python内置库itertools内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于Python 内置库 itertools

本文链接: https://www.lsjlt.com/news/137111.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Python 内置库 itertools
    目录1、itertools库2、使用itertools3、itertools.accumulate4、itertools.chain5、itertools.combinations_...
    99+
    2022-11-12
  • 关于Python中 循环器 itertools的介绍
    目录1、无穷循环器2、函数式工具3、组合工具4、groupby()5、其它工具在for i in iterator结构中,循环器每次返回的对象将赋予给i,直到循环结束。使用iter(...
    99+
    2022-11-12
  • 关于kali2.0上python的设置切
           由于之前一直在windows上学习python,安装的也是最新3.6。现在要转到linux下,首先面临的问题就是关于linux下默认版本的解决,目前kali2.0系统默认版本是python2。         本人电脑之前就...
    99+
    2023-01-31
    python
  • 关于Python如何安装requests库
    安装requests库之前我们需要先看一下电脑上有没有pip,可以在cmd中输入pip list查看,若出现以下内容则电脑已安装pip,否则需要先安装pip。 若电脑还没有安装Py...
    99+
    2023-05-16
    Python requests库 Python 安装requests库
  • 关于Python中Math库的使用
    目录Math 库概述第一种: import math 对 math 库中函数采用 math.<b>() 形式使用第二种: from math import <函数名...
    99+
    2023-05-15
    Python math math库
  • 关于Python中jieba库的使用
    目录jieba库概述jieba 库演示在 PyCharm 中添加 jieba 库使用jieba 库第三方库jieba库概述 jieba 库演示 对于一段英文文本, 例如 &ldquo...
    99+
    2023-05-15
    Python jieba jieba库
  • 关于python time库整理汇总
    目录1.Time库的作用2. Time库的使用时间获取函数时间格式化:将时间以合理的方式展示出来以以字符串的形式构造一个时间程序计时应用:测量起止动作所经历时间的过程3.实例:文本进...
    99+
    2022-11-12
  • 关于如何使用python的gradio库
    Gradio是一个功能丰富的Python库,可以让您轻松创建和共享自己的交互式机器学习和深度学习模型。 以下是Gradio库的一些主要功能: 创建交互式接口 Gradio库使得创建交...
    99+
    2023-05-17
    python python gradio
  • 关于如何使用python的logging库
    logging是Python标准库中用于记录日志的模块。它提供了一种简单但灵活的方法来记录程序中的事件,以便稍后进行调试和分析。 使用logging库的基本步骤如下: 导入loggi...
    99+
    2023-05-17
    python库 python logging
  • 关于python的mediapipe库踩过的坑
      大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/l...
    99+
    2023-09-06
    python pycharm 开发语言
  • 基于内存的关系数据库memsql初探
    背景 广告系统中,算法模型预估需要根据广告的实时转化统计结果,才能做出更精准的预估;同时,支持多维度聚合查询(例如按照广告各个不同层级维度,按照时间不同粒度的维度),并跨大区合并。一开始的版本是基于mysql,但由于统计数据更新...
    99+
    2019-10-28
    基于内存的关系数据库memsql初探
  • 关于python环境变量如何配置
    目录一、修改python.exe程序1、找你的python2.x解释器安装的位置。2、找到python3.x解释器安装的位置。二、添加环境变量1、在电脑搜索框:搜索环境变量2、点击进...
    99+
    2023-05-16
    python环境变量 python环境变量配置
  • 关于Python中flask-httpauth库用法详解
    目录1、基本身份验证示例1.1 使用postman请求1.2 使用python请求2、摘要认证示例3、令牌认证示例Flask-HTTPAuth是一个 Flask 扩展,它简化了 HT...
    99+
    2023-05-18
    Python flask flask-httpauth库
  • 关于AnacondaNavigator Jupyter Notebook更换Python内核的问题
    目录前言替换内核路径AnacondaNavigator Jupyter Notebook更换Python内核  前言 为什么要换呢,因为新安装的Anaconda Navig...
    99+
    2022-11-13
  • python内置库怎么调用
    要调用Python内置库,只需使用import关键字,后跟所需库的名称。例如,要调用math库,可以使用以下语句: import m...
    99+
    2023-10-24
    python
  • 关于Python网络爬虫requests库的介绍
    1. 什么是网络爬虫 简单来说,就是构建一个程序,以自动化的方式从网络上下载、解析和组织数据。 就像我们浏览网页的时候,对于我们感兴趣的内容我们会复制粘贴到自己的笔记本中,方便下次阅...
    99+
    2023-05-18
    Python网络爬虫 Python requests库
  • Javascript基础知识中关于内置对象的知识
    目录1、内置对象介绍1.1Math对象1.2Math中的方法1.3Date对象2、Date中的方法3、经典案例:倒计时效果:4、Array数组对象4.1数组的创建4.2数组中的常用方...
    99+
    2022-11-12
  • 怎么使用Python内置库collections
    这篇文章主要讲解了“怎么使用Python内置库collections”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python内置库collections”吧!Python中有很多好...
    99+
    2023-06-02
  • python内置库wsgiref怎么使用
    这篇文章主要介绍python内置库wsgiref怎么使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!WSGI基本原理1. WSGI处理过程浏览器到WSGI Server:浏览器发送的请求会先到WSGI Server...
    99+
    2023-06-15
  • 关于python爬虫应用urllib库作用分析
    目录一、urllib库是什么?二、urllib库的使用urllib.request模块urllib.parse模块利用try-except,进行超时处理status状态码 &...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作