返回顶部
首页 > 资讯 > 后端开发 > 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://lsjlt.com/news/137111.html(转载时请注明来源链接)

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

猜你喜欢
  • 关于Python 内置库 itertools
    目录1、itertools库2、使用itertools3、itertools.accumulate4、itertools.chain5、itertools.combinations_...
    99+
    2024-04-02
  • 关于Python中 循环器 itertools的介绍
    目录1、无穷循环器2、函数式工具3、组合工具4、groupby()5、其它工具在for i in iterator结构中,循环器每次返回的对象将赋予给i,直到循环结束。使用iter(...
    99+
    2024-04-02
  • Python中如何使用Itertools库
    这篇文章将为大家详细讲解有关Python中如何使用Itertools库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、概念简介1. 什么是迭代器迭代器是由__next__方法组成的对象。它...
    99+
    2023-06-16
  • Python标准库13 循环器 (itertools)
    在循环对象和函数对象中,我们了解了循环器(iterator)的功能。循环器是对象的容器,包含有多个对象。通过调用循环器的next()方法 (__next__()方法,在Python 3.x中),循环器将依次返回一个对象。直到所有的对象遍历穷...
    99+
    2023-06-02
  • Python中itertools库的四个函数介绍
    目录1. 引言2. accumulate() 函数3. compress() 函数4. groupby() 函数5. 排列组合操作6 总结1. 引言 在Python开发中,​​ite...
    99+
    2024-04-02
  • 关于python time库整理汇总
    目录1.Time库的作用2. Time库的使用时间获取函数时间格式化:将时间以合理的方式展示出来以以字符串的形式构造一个时间程序计时应用:测量起止动作所经历时间的过程3.实例:文本进...
    99+
    2024-04-02
  • 关于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如何安装requests库
    安装requests库之前我们需要先看一下电脑上有没有pip,可以在cmd中输入pip list查看,若出现以下内容则电脑已安装pip,否则需要先安装pip。 若电脑还没有安装Py...
    99+
    2023-05-16
    Python requests库 Python 安装requests库
  • 浅析Python自带性能强悍的标准库itertools
    目录前言无限迭代有限迭代排列组合迭代前言   可迭代对象就像密闭容器里的水,有货倒不出 itertools是python内置的标准模块,提供了很多简洁又高效的专用功能,使用得当能够极...
    99+
    2024-04-02
  • 关于kali2.0上python的设置切
           由于之前一直在windows上学习python,安装的也是最新3.6。现在要转到linux下,首先面临的问题就是关于linux下默认版本的解决,目前kali2.0系统默认版本是python2。         本人电脑之前就...
    99+
    2023-01-31
    python
  • 关于python的mediapipe库踩过的坑
      大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/l...
    99+
    2023-09-06
    python pycharm 开发语言
  • 关于如何使用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
  • 基于内存的关系数据库memsql初探
    背景 广告系统中,算法模型预估需要根据广告的实时转化统计结果,才能做出更精准的预估;同时,支持多维度聚合查询(例如按照广告各个不同层级维度,按照时间不同粒度的维度),并跨大区合并。一开始的版本是基于mysql,但由于统计数据更新...
    99+
    2019-10-28
    基于内存的关系数据库memsql初探
  • python内置库怎么调用
    要调用Python内置库,只需使用import关键字,后跟所需库的名称。例如,要调用math库,可以使用以下语句: import m...
    99+
    2023-10-24
    python
  • Python编程itertools模块处理可迭代集合相关函数
    容器与可迭代对象 在正式开始前先补充一些基本概念在 Python 中存在容器 与 可迭代对象 容器:用来存储多个元素的数据结构,例如 列表,元组,字典,集合等内容; ...
    99+
    2024-04-02
  • 关于Python中flask-httpauth库用法详解
    目录1、基本身份验证示例1.1 使用postman请求1.2 使用python请求2、摘要认证示例3、令牌认证示例Flask-HTTPAuth是一个 Flask 扩展,它简化了 HT...
    99+
    2023-05-18
    Python flask flask-httpauth库
  • Python中itertools库的四个函数是什么及怎么用
    这篇文章主要介绍了Python中itertools库的四个函数是什么及怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中itertools库的四个函数是什么及怎么用文章都会有所收获,下面我们一起...
    99+
    2023-06-29
  • 关于python multiproces
    这两天温故了python 的multiprocessing多进程模块,看到的pipe和queue这两种ipc方式,啥事ipc? ipc就是进程间的通信模式,常用的一半是socke,rpc,pipe和消息队列等。 今个就再把pipe和queu...
    99+
    2023-01-31
    python multiproces
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作