【重要】itertools库函数简介及简单用法示例

news/2024/12/19 9:33:02/文章来源:https://www.cnblogs.com/nxhujiee/p/18616396

itertools 提供了一些用于操作迭代器的函数,如chain、islice等,方便进行迭代操作。
以下是根据您提供的列表,以表格形式显示的itertools库函数的简介及简单用法示例:

序号 函数名 简介 简单用法示例
1 accumulate 对输入迭代器中的元素进行累积操作,返回累积结果
2 chain 将多个迭代器连接成一个连续的迭代器
3 combinations 从输入的可迭代对象中返回指定长度的所有可能组合
4 combinations_with_replacement 类似于combinations,但允许组合中的元素重复
5 compress 通过指定布尔值迭代器来过滤输入迭代器中的元素
6 count 创建一个迭代器,从指定的起始值开始,每次递增指定的步长
7 cycle 将输入迭代器中的元素无限循环
8 dropwhile 丢弃输入迭代器中满足指定条件的元素,直到遇到不满足条件的元素
9 filterfalse 返回输入迭代器中不满足指定条件的元素
10 groupby 对输入迭代器中的元素进行分组,分组依据是元素的key函数值
11 islice 返回输入迭代器的指定切片,类似于列表切片
12 permutations 返回输入可迭代对象中所有可能的排列
13 product 计算输入迭代器的笛卡尔积
14 repeat 重复指定的元素或迭代器多次
15 starmap 类似于map,但函数参数来自输入迭代器的元组
16 takewhile 返回输入迭代器中满足指定条件的元素,直到遇到不满足条件的元素
17 tee 从单个迭代器创建多个独立的迭代器
18 zip_longest 类似于zip,但允许输入迭代器长度不同,用指定值填充较短的迭代器

示例1

import itertools
data = [1, 2, 3, 4, 5]
result = list(itertools.accumulate(data))
print(result)  # 输出: [1, 3, 6, 10, 15]

示例2

import itertools
iter1 = [1, 2, 3]
iter2 = ['a', 'b', 'c']
result = list(itertools.chain(iter1, iter2))
print(result)  # 输出: [1, 2, 3, 'a', 'b', 'c']

示例3

import itertools
data = [1, 2, 3]
result = list(itertools.combinations(data, 2))
print(result)  # 输出: [(1, 2), (1, 3), (2, 3)]

示例4

import itertools
data = [1, 2, 3]
result = list(itertools.combinations_with_replacement(data, 2))
print(result)  # 输出: [(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)]

示例5

import itertools
data = [1, 2, 3, 4, 5]
selectors = [True, False, True, False, True]
result = list(itertools.compress(data, selectors))
print(result)  # 输出: [1, 3, 5]

示例6

import itertools
counter = itertools.count(start=1, step=2)
print(next(counter))  # 输出: 1
print(next(counter))  # 输出: 3

示例7

import itertools
data = [1, 2, 3]
cycler = itertools.cycle(data)
print(next(cycler))  # 输出: 1
print(next(cycler))  # 输出: 2
print(next(cycler))  # 输出: 3
print(next(cycler))  # 输出: 1(循环开始)

示例8

import itertools
data = [1, 2, 3, 4, 5]
result = list(itertools.dropwhile(lambda x: x < 3, data))
print(result)  # 输出: [3, 4, 5]

示例9

import itertools
data = [1, 2, 3, 4, 5]
result = list(itertools.filterfalse(lambda x: x % 2 == 0, data))
print(result)  # 输出: [1, 3, 5]

示例10

import itertools
data = [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'c')]
result = {key: list(group) for key, group in itertools.groupby(data, key=lambda x: x[0])}
print(result)  # 输出: {1: [(1, 'a'), (1, 'b')], 2: [(2, 'a'), (2, 'c')]}

示例11

import itertools
data = range(10)
result = list(itertools.islice(data, 2, 5))
print(result)  # 输出: [2, 3, 4]

示例12

import itertools
data = [1, 2, 3]
result = list(itertools.permutations(data))
print(result)  # 输出所有可能的排列

示例13

import itertools
iter1 = [1, 2]
iter2 = ['a', 'b']
result = list(itertools.product(iter1, iter2))
print(result)  # 输出: [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]

示例14

import itertools
result = list(itertools.repeat('a', 3))
print(result)  # 输出: ['a', 'a', 'a']

15

import itertools
data = [(1, 2), (3, 4), (5, 6)]
result = list(itertools.starmap(lambda x, y: x + y, data))
print(result)  # 输出: [3, 7, 11]

16

import itertools
data = [1, 2, 3, 4, 5]
result = list(itertools.takewhile(lambda x: x < 3, data))
print(result)  # 输出: [1, 2]

17

import itertools
data = range(5)
it1, it2 = itertools.tee(data, 2)
print(list(it1))  # 输出: [0, 1, 2, 3, 4]
print(list(it2))  # 输出: [0, 1, 2, 3, 4]

18 | zip_longest | 类似于zip,但允许输入迭代器长度不同,用指定值填充较短的迭代器 |

import itertools
iter1 = [1, 2, 3]
iter2 = ['a', 'b']
result = list(itertools.zip_longest(iter1, iter2, fillvalue='-'))
print(result)  # 输出: [(1, 'a'), (2, 'b'), (3, '-')]
``` |请注意,这些示例仅展示了每个函数的基本用法,实际应用中可能需要更复杂的逻辑或参数设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855243.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开箱即用!一个基于 Go 的文件分享工具!

Go File —— 一个基于 Go 实现的文件分享工具,开箱即用,内置图床和视频播放页面,可用于局域网内分享文件和文件夹。大家好,我是 Java陈序员。 今天,给大家介绍一个自托管的文件分享工具,开箱即用!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200…

苍穹外卖day01

nginx、YAPI、swagger、knife4jbug记录知识点记录技术选型用户层的技术,主要都是前端技术; 整体结构后端环境搭建缺少sky-take-out.iml文件,在IEDA的终端输入 mvn idea:module 可生成;导入黑马提供的项目后,IDEA中jdk环境需改为18,Maven地址需改为自己的地址;resources文…

pdfjs 报错提示Failed to load module script

参考文章: pdfjs 报错提示Failed to load module script [JavaScript] MIME type 异常 在服务器好不容易配好nginx转发,jar包,静态资源等,访问网站一切ok,结果打开pdf时,无法预览:F12看了下,接口返回正常啊,说明接口没问题,接着看控制台,oh,问题在这: Failed to lo…

跨境电商双旦选品工具分享——看板软件篇

跨境电商在圣诞节和元旦节期间利用看板软件进行选品时,应充分利用其信息整合、数据分析、任务管理和团队协作等功能,以提升选品的效率和准确性。同时,也要关注市场趋势和消费者需求的变化,及时调整选品策略,以抓住节日销售的黄金时机。跨境电商在圣诞节和元旦节期间利用看…

自定义Snippets常用代码片段提高开发效率

自定义Snippets常用代码片段提高开发效率 日常搬砖过程中,有很多代码是重复的 对于这些代码,可以考虑放进工具类,或者安装snippets插件,或者干脆找以前的代码Ctrl+CV也是常有的事 对于常用又简单直接的代码,如果都放进工具类的某个方法中,未免有些过度封装 每一种框架和语…

加速企业流转:智能企业间文件传输方案,驱动业务高效前行!

企业间文件传输是指在不同企业之间,或企业内部的不同部门、团队之间,以及企业与外部合作伙伴之间,进行文件或数据的传递和共享的过程。这些文件可能包括各种类型的文档、图片、视频、代码等,用于支持企业的项目协作、数据备份、数据迁移、数据分析以及数据共享等需求。企业…

Landsat 使用QA波段去云

GEE中不同的landsat系列影像的波段名称、QA云位数有出入,生搬硬套网上现成的QA去云很容易出错。不同的影像需要设置不同的QA_PIXEL波段名称和比特位数,都在GEE的数据波段说明文档里。当前版本似乎都是3-云、4-云阴影。了解了原理,后面遇到陌生影像也能处理。 def rmCloud(im…

MySQL 时区与 serverTimezone

TL;DR手动为 MySQL 指定非偏移量的时区,以避免 TIMESTAMP 类型夏令时问题和时区转化性能瓶颈 TIMESTAMP 范围:1970-01-01 00:00:01 UTC to 2038-01-19 03:14:07 连接 MySQL 数据库时,serverTimezone 参数用于指定数据库服务器的时区,需要设置为与 MySQL 服务端相同的时区My…

【详解】Ftrans安全数据摆渡系统,让数据传输更安全高效且可控!

基于提高安全性、满足合规性要求、保护核心资产、提高性能和可靠性以及风险管理等多方面的考虑,企业一般会选择网络隔离,有助于企业确保网络安全和数据保护,为企业的稳健发展提供有力保障。 一、网络隔离的必要性 1、提高安全性 1)限制潜在攻击者的横向移动:网络隔离可以限…

服务后台报临时上传路径/tmp/tongweb.xxxxxxxxxxxxxxxx.9999/work/Tongweb/localhost/ROOT无效

报错: 当服务后台报org.springframework.web.multipart.MultiPartException,failed to parsemultipart servlet request; nested exception is java.io.IOException,临时上传路径/tmp/tongweb.79923423523523135.9090/work/Tongweb/localhost/ROOT无效;是因为linux过段时间…

在 VS Code 中可以免费使用 GitHub Copilot了!

今天,有一个重大的好消息要分享给大家: 从现在开始,我们可以在 Visual Studio Code 中,免费使用强大的 GitHub Copilot 进行开发啦! 每个人都可以享受到 AI 加持下的丝滑开发体验! 那就让我们一起来看看如何能免费地用上 GitHub Copilot 吧! 1. 下载最新版本的 VS Code…