首页 > 编程语言 >Python中itertools详解

Python中itertools详解

时间:2022-12-28 12:22:05浏览次数:66  
标签:函数 迭代 Python itertools 详解 key print import

目录

Python中itertools模块

一、 简介

itertools是python内置的模块,使用简单且功能强大

官方文档地址:https://docs.python.org/zh-cn/3/library/itertools.html

itertools模块标准化了一个快速、高效利用内存的核心工具集,这些工具本身或组合都很有用。它们一起形成了“迭代器代数”,这使得在纯Python中有可能创建简洁又高效的专用工具。

同时,itertools模块是python的内置库,我们可以直接使用,不需要进行额外的安装

这里讲解一些常用的函数,其余函数请到官方文档查看学习。

二、 使用介绍

1、 常用迭代器

1.1 chain

函数介绍:chain可以把一组迭代对象串联起来,形成一个更大的迭代器

语法:(class) chain(*iterables: Iterable[str])

import itertools
l1 = ["A", "B"]
l2 = ["C", "D"]
print(list(itertools.chain(l1, l2)))  # 将两个列表展开,当然,也可以用到一些可迭代对象里面去,比如说字符串等,返回一个可迭代对象

1.2 groupby

函数介绍:groupby 把迭代器中相邻的重复元素(key)挑出来放一起

语法:(class) groupby(iterable: Iterable[_T1@__new__], key: None = ...)

import itertools
for key, value in itertools.groupby("hello world! My name is Steve Anthony"):
    print(key, list(value))
    
"""结合key使用"""
import itertools
data = [
    (1, "Make", 93),
    (1, "Jack", 100), 
    (2, "Lucy", 90)
]
for key, value in itertools.groupby(data, key=lambda student: student[0]):
    print(key, list(value))

2、 无穷迭代器

2.1 count

函数作用:生成无界限序列,count(start=0, step=1) ,示例从100开始,步长为2,循环10,打印对应值;必须手动break,count()会一直循环。

语法:count(start: int, [step: _Step = ...])

import itertools

for i in itertools.count(10):
    print(i)=

2.2 cycle

函数作用:对可迭代容器里面的元素进行无限循环

语法:(class) cycle(__iterable: Iterable[int], /)

import itertools

for i in itertools.cycle(range(10)):
    print(i)

2.3 repeat

函数作用:对可迭代容器里面的元素重复times次

语法:repeat(object: range, times: int)

import itertools

for i in itertools.repeat(range(10), 2):
    print(i)

3、排列组合迭代器

3.1 product

函数作用:返回笛卡尔积,相当于嵌套的for循环,重复repeat次

语法:product(*iterables: Iterable, repeat: int = 1)

import itertools

for i in itertools.product([1, 2], ["A", "B", "C"]):
    print(i)

3.2 permutations

函数作用:生成一个长度为r的元组,元组中存放所有可能的排列,无重复元素

语法:(class) permutations(iterable: Iterable, r: int | None = ...)

import itertools

for i in itertools.permutations([1, 2, 3], 3):  # r的默认值为2
    print(i)

3.3 combinations

函数作用:生成一个长度为r的元组,有序,并且无重复元素

语法:(class) combinations(iterable: Iterable[_T@__new__], r: Literal[2])

import itertools

for i in itertools.combinations([1, 2, 3], 3):
    print(i)

3.4 combinations_with_replacement

函数作用:生成一个长度为r的元组,有序,有重复元素

import itertools

for i in itertools.combinations_with_replacement([1, 2, 3], 3):
    print(i)

这些是一些常用的迭代器函数,如果还想要更加深入的了解的话,可以去官方文档查看!

标签:函数,迭代,Python,itertools,详解,key,print,import
From: https://www.cnblogs.com/liuzhongkun/p/17009864.html

相关文章

  • python 接入钉钉群机器人
    一、获取机器人信息。1)添加自定义机器人 2)保存机器人webhook信息  二:调用机器人接口1)curl命令转化程代码可以使用在线工具进行转化程其他语言的代码。cur......
  • 嵌入式:ARM符号定义伪操作详解
    ARM汇编语言的伪操作、宏指令与伪指令ARM汇编语言源程序中语句一般由指令、伪操作、宏指令和伪指令组成伪操作是ARM汇编语言程序里的一些特殊指令助记符,它的作用主要是为完......
  • Java千问11:instanceof运算符用法详解
    ​Java语言当中提供了一个叫做instanceof的运算符。很多教科书上对这个运算符的介绍并不详细,只是简单的说这个运算符是用来判断某个对象是不是属于某种类型。我们现在就用一......
  • python——random模块
    参考:https://www.cnblogs.com/liangmingshen/p/8909376.html 1.random.random() #用于生成一个0到1的随机浮点数:0<=n<1.01importrandom2a=random.rand......
  • python实验报告(第11章)
    实验11:使用Python操作数据库一、实验目的和要求1、学会数据库编程接口;2、学会使用SQLite;3、学会使用MySQL。二、实验环境软件版本:Python3.1064_bit三、实验过程......
  • python实验报告(第12章)
    实验12:GUI界面编程一、实验目的和要求1、学会应用常用控件;2、学会使用BoxSizer布局;3、学会事件处理。二、实验环境软件版本:Python3.1064_bit三、实验过程1、实......
  • vue环境配置文件详解
    一.什么是配置文件1.在vue项目目录下,我们可以看到诸如package.json、.gitignore、package-lock.json等等能配置项目的结构、引用的库、运行的方式、版本控制等等的都称为......
  • python多线程
    1、获取线程ID(线程是操作系统中最小的调度单位)importthreadingt=threading.currentThread()#线程IDprint('Threadid:%d'%t.ident)#线程NAMEprint('Threadna......
  • 极客编程python入门-多重继承
    多重继承通过多重继承,一个子类就可以同时获得多个父类的所有功能。Python自带的很多库也使用了MixIn。举个例子,Python自带了​​TCPServer​​和​​UDPServer​​这两类网......
  • Python之多任务编程线程
    一、线程概述1.线程的介绍在Python中,想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务的另外一种方式。2.线程的概念线程是进程中执行代码的一个分支,每个......