首页 > 其他分享 >【重要】itertools库函数简介及简单用法示例

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

时间:2024-12-19 09:31:23浏览次数:9  
标签:迭代 示例 itertools result print data 库函数

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, '-')]
``` |

请注意,这些示例仅展示了每个函数的基本用法,实际应用中可能需要更复杂的逻辑或参数设置。

标签:迭代,示例,itertools,result,print,data,库函数
From: https://www.cnblogs.com/nxhujiee/p/18616396

相关文章

  • 视频去重原理及 Demo 示例
    视频去重是一个常见的需求,主要用于视频库或平台管理中,通过判断视频是否相同(或相似)来移除冗余内容。实现视频去重可以通过多种方法,具体选择取决于业务场景和性能要求。1.视频去重的原理1.1基本原理视频去重的核心在于计算视频的特征,然后比较这些特征以判断视频是否相同......
  • 简单的基于Spring Cloud和Vue的示例项目结构及部分关键代码
    后端(SpringCloud部分)1.创建SpringCloud项目(以SpringCloudGateway和SpringCloudEureka为例)首先,使用SpringInitializr创建一个基础的SpringBoot项目,并添加相关的SpringCloud依赖,比如:spring-cloud-starter-gateway:用于实现API网关功能。spring-cloud-starter-netflix-......
  • 【重要】csv库函数简介及简单用法示例
    下面是关于Python中csv库函数的简介及简单用法示例的表格,包括序号、函数名、简介和简单用法示例:序号函数名简介简单用法示例1csv.reader创建一个读取CSV文件的对象2csv.writer创建一个写入CSV文件的对象3csv.DictReader创建一个读取CSV文件并将其行作为......
  • 【重要】re库函数简介及简单用法示例
    以下是根据您提供的列表,以表格形式整理的re库函数简介及简单用法示例:序号函数名/属性简介简单用法示例1ASCII使\w,\W,\b,\B,\d,\D,\s和\S只匹配ASCII字符,而不是Unicode字符re.compile(pattern,re.ASCII)2DEBUG显示调试信息,用于调试正则表达式......
  • node.js的简单示例
    Node.js是一个基于ChromeV8引擎的JavaScript运行时环境,用于方便地构建快速、可扩展的网络应用。下面是一个简单的Node.js示例,它创建了一个简单的HTTP服务器,当访问服务器时,它会响应“HelloWorld”//引入Node.js的HTTP模块consthttp=require('http');//创建HTTP服务......
  • 一个 ashx的 上传,代码示例
    -------------------------jsfunctionajaxUploadImg(btn){varbutton=btn,interval;newAjaxUpload(button,{action:'upload.ashx',data:{},responseType:'json',name:'myfile',......
  • 【重要】time库函数简介及简单用法示例
    由于您提到的部分项(如_STRUCT_TM_ITEMS,__doc__,__loader__,__name__,__package__,__spec__)并不是time库中用于时间处理的函数,而是模块的内部属性或特殊变量,因此我将只列出与时间处理相关的函数,并按照您的要求以表格形式展示。序号函数名简介简单用法示例1al......
  • Java语言使用Lambda表达式介绍及示例
    前言JavaLambda表达式是Java8中引入的一个重要特性,它提供了一种简洁、灵活的方式来表示函数式接口的实现。以下是一些JavaLambda表达式的介绍和示例,展示了如何在不同场景中使用Lambda表达式。基本概念Lambda表达式基于数学中的λ演算得名,也可称为闭包(Closure)。它是一小......
  • 【重要】easygui库中所有函数简介及示例
    以下是用表格形式整理后的每个easygui函数的信息。请注意,由于某些项(如EgStore,__all__,__builtins__等)并不是easygui的函数,因此它们不会出现在表格中。只列出了与easygui函数相关的项。序号函数名简介简单用法示例1abouteasygui显示关于easygui的信息easygui.abo......
  • 高性能计算-Intel IPP库ARM移植示例(20)
    1.简介Intel®IntegratedPerformancePrimitives,即英特尔集成性能基元(简称IPP),为信号、数据和图像处理特定应用领域,提供simd优化的一组全面的函数库。本项目将对exp、cos、sin、tone、Triangle函数用NEON向量化指令实现ARM移植版本,有串行和向量化两个版本。计算使用泰勒展开......