iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中如何使用Itertools库
  • 511
分享到

Python中如何使用Itertools库

2023-06-16 05:06:30 511人浏览 八月长安

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

摘要

这篇文章将为大家详细讲解有关python中如何使用Itertools库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、概念简介1. 什么是迭代器?迭代器是由__next__方法组成的对象。

这篇文章将为大家详细讲解有关python中如何使用Itertools库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。


一、概念简介

1. 什么是迭代器?

迭代器是由__next__方法组成的对象。它有一个状态。状态用于记住迭代期间的执行。因此,迭代器知道它的当前状态,这使它的内存效率高。这就是为什么在内存高效和快速的应用程序中使用迭代器的原因。

我们可以打开无限的数据流(比如读取文件)并获取下一项(比如文件中的下一行)。然后我们可以对项目执行一个操作,并继续进行下一个项目。这可能意味着我们可以有一个返回无限个元素的迭代器,因为我们只需要知道当前项。

当没有下一个要返回的项时,迭代器会引发StopIteration异常。

2. 什么是可迭代的?

iterable是可以返回迭代器的对象。它有一个__iter__方法返回一个迭代器。iterable也是一个我们可以循环并可以调用iter()的对象。它有一个__getitem__方法,它可以从0开始去连续索引(并在索引不再有效时引发一个IndexError)。

3. 什么是Itertools?

Itertools是Python模块,是Python  3标准库的一部分。它允许我们在迭代器上执行高效的内存和计算任务。它的灵感来自APL、Haskell和SML的构造。

从本质上讲,该模块包含许多快速且内存效率高的方法,这些方法可以帮助我们用纯Python简洁而高效地构建应用程序。

二、无限迭代器

如果我们想构造一个返回无限均匀间隔值的迭代器呢?或者,如果我们必须从迭代器生成一个元素循环呢?或者,也许我们想要重复迭代器的元素?

itertools库提供了一组函数,我们可以使用这些函数来执行所需的所有功能。

本节中列出的三个函数构造并返回可以是无限项流的迭代器。

1. Count

作为实例,我们可以生成一个等距值的无限序列:

start = 10 stop = 1 my_counter = it.count(start, stop) for i in my_counter:     # this loop will run for ever     print(i)

结果:

10 11 12 13 14 15

2. Cycle

我们可以使用cycle方法从输入中生成无限循环的元素。

该方法的输入需要是可迭代的对象,比如列表、字符串或字典等:

my_cycle = it.cycle('Python') for i in my_cycle:    print(i)

结果:

P ythonPythonP

3. Repeat

要重复一个项(例如字符串或集合),可以使用repeat()函数:

to_repeat = 'FM' how_many_times = 4 my_repeater = it.repeat(to_repeat, how_many_times)for i in my_repeater:    print(i)#Prints FM FM FM FM

这将重复字符串“FM”4次。如果我们不提供第二个参数,那么它将无限次重复这个字符串。

Python中如何使用Itertools库

三、终止迭代器

在本节中,我将说明终止迭代的强大特性。这些函数可以用于许多场景,例如:

  • 我们可能有很多迭代,我们想在一个序列中一个一个地对所有迭代的元素执行一个操作。

  • 或者当我们有很多函数想要对iterable的每个元素执行时

  • 或者有时我们就从迭代器中删除元素,然后对其他元素执行操作。

1. Chain

这个方法允许我们创建一个迭代器,它返回序列中所有输入迭代中的元素,直到没有元素剩下为止。因此,它可以将连续序列视为单个序列。

chain = it.chain([1,2,3], ['a','b','c'], ['End']) for i in chain:    print(i)

结果:

1 23abcEnd

2. Drop While

我们可以传递一个iterable和一个条件,这个方法将开始对每个元素计算条件,直到条件对一个元素返回False为止。一旦某个元素的条件值为False,该函数将返回可迭代的其余元素。

例如,假设我们有一个作业列表,并且我们希望遍历元素,并且只有在不满足条件时才返回元素。一旦条件的值为False,我们期望返回迭代器的其余元素。

jobs = ['job1', 'job2', 'job3', 'job10', 'job4', 'job5'] dropwhile = it.dropwhile(lambda x : len(x)==4, jobs) for i in dropwhile:     print(i)

结果:

job10 job4job5

该方法返回了上面的三项,因为元素job10的长度不等于4个字符,因此返回了job10和其他元素。

3. Take While

这个方法与dropwhile()方法相反。本质上,它返回一个iterable的所有元素,直到第一个条件返回False,然后它不返回任何其他元素。

例如,假设我们有一个作业列表,并且希望在不满足条件时立即停止返回作业。

jobs = ['job1', 'job2', 'job3', 'job10', 'job4', 'job5'] takewhile = it.takewhile(lambda x : len(x)==4, jobs) for i in takewhile:     print(i)

结果:

job1 job2job3

4. GroupBy

这个函数在将可迭代的连续元素分组之后构造一个迭代器。该函数返回一个键、值对的迭代器,其中键是组键,值是按键分组的连续元素的集合。

考虑以下代码片段:

iterable = 'FFFAARRHHHAADDMMAAALLIIKKK' my_groupby = it.groupby(iterable)for key, group in my_groupby:     print('Key:', key)     print('Group:', list(group))

注意,group属性是可迭代的,因此我将其具体化为一个列表。

因此,这将打印:

Key: F Group: [‘F’, ‘F’, ‘F’] Key: A Group: [‘A’, ‘A’] Key: R Group: [‘R’, ‘R’] Key: H Group: [‘H’, ‘H’, ‘H’] Key: A Group: [‘A’, ‘A’] Key: D Group: [‘D’, ‘D’] Key: M Group: [‘M’, ‘M’] Key: A Group: [‘A’, ‘A’, ‘A’] Key: L Group: [‘L’, ‘L’] Key: I Group: [‘I’, ‘I’] Key: K Group: [‘K’, ‘K’, ‘K’]

5. Tee

该方法可以拆分一个迭代,并从输入中生成新的迭代。输出也是一个迭代器,它返回给定数量的项的可迭代值。为了更好地理解它,请看下面的代码片段:

iterable = 'FM' tee = it.tee(iterable, 5) for i in tee:    print(list(i))

这个方法返回整个可迭代FM, 5次:

[‘F’, ‘M’] [‘F’, ‘M’][‘F’, ‘M’][‘F’, ‘M’][‘F’, ‘M’]

四、组合迭代器

1. Permutations

通过使用permutation方法,我们可以创建一个迭代器来返回输入iterable中元素的连续排列。

我们可以传入一个参数来指定排列的长度。它默认为可迭代的长度。

这意味着当缺少长度时,该方法将生成所有可能的全长排列。

iterable = 'FM1' length = 2 permutations = it.permutations(iterable, length) for i in permutations:     print(i)

结果:

(‘F’, ‘M’, ‘1’) (‘F’, ‘1’, ‘M’)(‘M’, ‘F’, ‘1’)(‘M’, ‘1’, ‘F’)(‘1’, ‘F’, ‘M’)(‘1’, ‘M’, ‘F’)

如果长度为2,则生成:

(‘F’, ‘M’) (‘F’, ‘1’)(‘M’, ‘F’)(‘M’, ‘1’)(‘1’, ‘F’)(‘1’, ‘M’)(‘F’, ‘M’)(‘F’, ‘1’)(‘M’, ‘1’)

2. Combinations

最后,我想解释一下如何生成iterable的组合。

给定一个可迭代器,我们可以构造一个迭代器来返回给定长度的元素的子序列。

根据它们的位置,元素被视为唯一的,并且只返回不同的元素。

iterable = 'FM1' combinations = it.combinations(iterable, 2) for i in combinations:    print(i)

结果:

(‘F’, ‘M’) (‘F’, ‘1’)(‘M’, ‘1’)

关于Python中如何使用Itertools库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Python中如何使用Itertools库

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

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

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

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

下载Word文档
猜你喜欢
  • Python中如何使用Itertools库
    这篇文章将为大家详细讲解有关Python中如何使用Itertools库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、概念简介1. 什么是迭代器迭代器是由__next__方法组成的对象。它...
    99+
    2023-06-16
  • Python中itertools模块如何使用
    这篇文章主要介绍“Python中itertools模块如何使用”,在日常操作中,相信很多人在Python中itertools模块如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中iterto...
    99+
    2023-07-05
  • python如何使用itertools模块
    这篇文章主要为大家展示了“python如何使用itertools模块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何使用itertools模块”这篇文章吧。高效的itertools...
    99+
    2023-06-27
  • python中怎么使用Itertools
    这篇文章将为大家详细讲解有关python中怎么使用Itertools,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Itertools如果深入学习Python,那你肯定要熟悉itertools。iterto...
    99+
    2023-06-27
  • python中itertools模块使用小结
    Python 内置的 itertools 模块包含了一系列用来产生不同类型迭代器的函数或类,这些函数的返回都是一个迭代器,我们可以通过 for 循环来遍历取值,也可以使用 next(...
    99+
    2024-04-02
  • Python中itertools简介使用介绍
    目录Python中itertools模块一、 简介二、 使用介绍1、 常用迭代器1.1 chain1.2 groupby2、 无穷迭代器2.1 count2.2 cycle2.3 r...
    99+
    2022-12-28
    Python中itertools Python itertools详解 Python itertools
  • python的itertools包怎么使用
    这篇文章主要介绍了python的itertools包怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python的itertools包怎么使用文章都会有所收获,下面我们一起来看看吧。前言:Python的内...
    99+
    2023-06-29
  • python中Itertools模块怎么用
    小编给大家分享一下python中Itertools模块怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Itertools 模...
    99+
    2024-04-02
  • Python中itertools库的四个函数介绍
    目录1. 引言2. accumulate() 函数3. compress() 函数4. groupby() 函数5. 排列组合操作6 总结1. 引言 在Python开发中,​​ite...
    99+
    2024-04-02
  • Python中itertools模块的使用教程详解
    目录itertools模块的介绍无限迭代器(Infinite Iterators)组合迭代器(Combinatoric Iterators)有限迭代器(Iterators Termi...
    99+
    2024-04-02
  • Python中的itertools模块的用法
    本篇内容主要讲解“Python中的itertools模块的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的itertools模块的用法”吧!在Python中有一个功能强大的迭代...
    99+
    2023-06-16
  • Python中itertools库的四个函数是什么及怎么用
    这篇文章主要介绍了Python中itertools库的四个函数是什么及怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中itertools库的四个函数是什么及怎么用文章都会有所收获,下面我们一起...
    99+
    2023-06-29
  • Python中如何使用ChatOps库
    Python中如何使用ChatOps库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。ChatOps 是基于会话导向而进行的开发。其思路是你可以编写能够对聊天窗口中的某些输入...
    99+
    2023-06-16
  • Python中jieba库如何使用
    这篇文章主要介绍“Python中jieba库如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中jieba库如何使用”文章能帮助大家解决问题。一、jieba库基本介绍(1)jieba...
    99+
    2023-07-05
  • Python中如何使用NumPy库?
    NumPy是Python中最流行的科学计算库之一。它提供了一种高效的处理大型数组和矩阵的方法,同时也包含了许多用于数学、科学和工程计算的常用函数。本文将介绍NumPy库的基础知识以及如何使用它来进行数组和矩阵操作。 安装NumPy 在...
    99+
    2023-09-26
    api numpy spring
  • python中如何使用numpy库
    这篇文章主要介绍“python中如何使用numpy库”,在日常操作中,相信很多人在python中如何使用numpy库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中如何使用numpy库”的疑惑有所...
    99+
    2023-06-27
  • python中如何使用Matplotlib库
    这篇文章将为大家详细讲解有关python中如何使用Matplotlib库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互...
    99+
    2023-06-02
  • 一文详解Python中itertools模块的使用方法
    目录chain(*iterables)combinations(iterable: Iterable, r)combinations_with_replacement(it...
    99+
    2023-03-22
    Python itertools模块使用 Python itertools模块 Python itertools
  • Polars库如何在python中使用
    这期内容当中小编将会给大家带来有关Polars库如何在python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几...
    99+
    2023-06-14
  • 如何在python中使用jieba库
    这篇文章将为大家详细讲解有关如何在python中使用jieba库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-07
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作