itertools, 一个超好用的Python库

前言

Python用来处理迭代器的工具你想到了啥?itertools 就是一个特别有用的库,它提供了一系列用于创建和操作迭代器的工具,以下是10个常用的操作,可用在实际工作中,熟练掌握这些操作,将极大提升你在 Python 中的编程效率。
 

1. 无限计数器: count()

count(start, step) 用于创建一个无限的迭代器,从 start 开始,每次增加 step 

import itertoolsfor num in itertools.count(10, 2):if num > 20:breakprint(num)

2. 循环迭代: cycle()

cycle(iterable) 会无限重复迭代一个可迭代对象。

counter = 0
for item in itertools.cycle('ABCD'):if counter > 7:breakprint(item)counter += 1

3. 重复元素: repeat()

repeat(object, times) 重复一个对象 times 次。

for item in itertools.repeat('Hello', 3):print(item)

4. 链接迭代器: chain()

chain(*iterables) 用于链接多个迭代器。

for item in itertools.chain([1, 2, 3], ['a', 'b']):print(item)

5. 数据过滤: compress()

compress(data, selectors) 根据 selectors 中的布尔值过滤 data 

for item in itertools.compress('ABCDE', [1,0,1,0,1]):print(item)

6. 迭代器切片: islice()

islice(iterable, start, stop[, step]) 对迭代器进行切片操作。

for item in itertools.islice(range(10), 2, 8, 2):print(item)

7. 笛卡尔积: product()

product(*iterables, repeat=1) 创建一个迭代器,生成输入迭代器的笛卡尔积。

for item in itertools.product('AB', range(2)):print(item)

8. 排列组合: permutations()

permutations(iterable, r=None) 返回可迭代对象的所有长度为 的排列。

for item in itertools.permutations('ABC', 2):print(item)

9. 组合生成: combinations()

combinations(iterable, r) 返回可迭代对象的所有长度为 的组合。

for item in itertools.combinations('ABC', 2):print(item)

10. 组合生成(允许重复): combinations_with_replacement()

combinations_with_replacement(iterable, r) 类似于 combinations ,但允许元素重复。

for item in itertools.combinations_with_replacement('ABC', 2):print(item)

结语

itertools 库提供了强大而灵活的工具集,用于处理各种迭代任务。无论是简单的数据重复还是复杂的数据组合, itertools 都能轻松应对。

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

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

相关文章

带你快速初步了解Python列表

1.列表 列表主要是用来存储多个数据,是有序的集合 2.创建列表 """ 语法:变量名 [数据1,数据2,数据3......] 注意:列表中的数据类型可以是各种不同的数据类型 """ 创建空列表 list1 [] print(list1) …

【Ai生态开发】Spring AI上架,打造专属业务大模型,AI开发再也不是难事!

大家好 这里是苏泽 后端是工作 ai是兴趣 对于ai的产生我的立场是拥抱ai的 是希望拿他作为提升能力的工具 那么这一篇带大家来学习如何使用ai打造一个专属的业务大模型 需求 就是说假设现在有一个 商城系统 里面有查询订单的api和获取商品购买方式的api 用户只需要输入 “…

【Windows】打开ftp服务器上的文件夹时发生错误,请检查是否有权限

【Windows】打开ftp服务器上的文件夹时发生错误,请检查是否有权限 ftp协议有两种工作方式:port方式和pasv方式,中文意思为主动式和被动式。 port(主动)方式的连接过程是:客户端向服务器的ftp端口&#xf…

Unity 游戏设计模式:工厂模式

本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com 工厂模式是一种创建型设计模式,它提供了一种封装对象实例化过程的方式,使得客户端代码与具体类的实现解耦。 在 C# 的游戏设计中,模式有以下作用: 对象的创建…

3.1作业

作业要求&#xff1a; 通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 程序代码&#xff1a; #include<myhead.h> #define SER_IP "192.168.126.…

一文讲透:可视化大屏中3D元素的融入和使用方法

在可视化大屏中&#xff0c;3D元素融入的越来越多&#xff0c;贝格前端工场经常接到这类项目&#xff0c;很多老铁认为加个3D效果很easy&#xff0c;其实不然&#xff0c;工序非常复杂&#xff0c;总结如下。 一、什么是3D技术 三维展示&#xff08;3D展示&#xff09;是指使用…

Codeforces Round 930 (Div. 2)题解

A. Shuffle Party&#xff08;Problem - A - Codeforces&#xff09; 题目大意&#xff1a;给定一个n长数组&#xff0c;并使得a[i]i&#xff0c;现在定义一种操作swap(k):找出k的最大不等于自己的除数d&#xff0c;交换a[k]和a[d]&#xff0c;k从1开始直到n结束&#xff0c;问…

灯塔:HTML笔记

网页由哪些部分组成&#xff1f; *文字 图片 音频 视频 超链接 程序员写的代码是通过浏览器转换成网页的 五大浏览器有哪些&#xff1f; *IE浏览器 *火狐浏览器&#xff08;Firefox&#xff09; *谷歌浏览器&#xff08;Chrome&#xff09; *Safari浏览器 *欧朋浏览器&…

基于CVX凸优化的电动汽车充放电调度matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 CVX凸优化 4.2 电动汽车充放电调度 5.完整程序 1.程序功能描述 基于CVX凸优化的电动汽车充放电调度.仿真输出无电动汽车充电时的负载&#xff0c;电动汽车充电时cvx全局优化求解后的总…

LaMa Image Inpainting 图像修复 Onnx Demo

目录 介绍 效果 模型信息 项目 代码 下载 LaMa Image Inpainting 图像修复 Onnx Demo 介绍 gihub地址&#xff1a;https://github.com/advimman/lama &#x1f999; LaMa Image Inpainting, Resolution-robust Large Mask Inpainting with Fourier Convolutions, WAC…

大模型量化技术原理-ZeroQuant系列

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;从而导致模型变得越来越大&#xff0c;因此&#xff0c;我们需要一些大模型压缩技术来降低模型部署的成本&#xff0c;并提升模型的推理性能。 模型压缩主要分…

Manacher

Manacher #include<bits/stdc.h> using namespace std; ​ const int N 1e6 9; char s[N]; int p[N]; int mian() {cin >> s 1;int n strlen(s 1);for (int i 2 * n 1; i > 1; --i)s[i] (i & 1) ? # : s[i >> 1];s[0] ^, s[2 * n 2] $;in…