首页 > 其他分享 >标准库中的生成器函数——用于扩展元素的生成器函数

标准库中的生成器函数——用于扩展元素的生成器函数

时间:2023-05-20 19:56:32浏览次数:28  
标签:函数 组合 list 生成器 cy next itertools 库中 print

 

 

1

 

 

combinations:组合数最少的;组合数的下限,重复没有意义(所以不存在AA,BB, CC 这种组合),元素的顺序也没意义(AB和BA是一种组合);

product:返回笛卡尔积,组合数最多的,组合数的上限,重复和元素的顺序都有意义;

combinations_with_replacement:重复有意义(所以存在AA,BB, CC 这种组合),元素的顺序无意义(AB和BA是1种组合);

permutations:重复没有意义(所以不存在AA,BB, CC 这种组合),元素的顺序有意义(AB和BA是2种组合);

 

 

 1  #组合学-生成器函数会从输入的多个元素中产出多个值
 2  
 3 import itertools
 4 
 5  
 6 group1 = list(itertools.combinations('ABC', 2))
 7 print('group1:', group1)
 8 # [('A', 'B'), ('A', 'C'), ('B', 'C')]
 9  
10 group2 = list(itertools.combinations_with_replacement('ABC', 2))
11 print('\ngroup2:', group2)
12  # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
13  
14 group3 = list(itertools.permutations('ABC', 2)) 
15 print('group3:', group3)
16  # [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
17 
18 group4 = list(itertools.product('ABC', repeat=2))
19 print('group4:', group4)
20  # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]

 

 

1

演示count, repeat, cycle的用法

 1 #演示count, repeat, cycle的用法
 2 import itertools
 3 import operator
 4 
 5 
 6 ct = itertools.count()
 7 print(next(ct))  # 0
 8 print("打印三次:", next(ct), next(ct), next(ct))  # 1 2 3
 9 
10 
11 d  = list(itertools.islice(itertools.count(1, .3), 3)) 
12 print('d:', d)   #[1, 1.3, 1.6]
13 
14 
15 cy = itertools.cycle('ABC')
16 print(next(cy)) # A
17 print("打印三次:",next(cy),next(cy),next(cy))  # B C A
18 
19 cy_1 = list(itertools.islice(cy, 7))
20 print("返回cy的7个元素:", cy_1)  # 是接着前面已经输出的元素顺序,打印后面的7个元素
21 
22  
23 rp = itertools.repeat(7)  
24 print('rp:',next(rp),next(rp))  #   7 7
25 
26 
27 d1 = list(itertools.repeat(8, 4)) 
28 print('d1:', d1)   # [8, 8, 8, 8]
29 
30 
31 d2 = list(map(operator.mul, range(11), itertools.repeat(5)))
32 print('d2:', d2)  #  [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

 

 

1

 

 

 

 

 

1

 

标签:函数,组合,list,生成器,cy,next,itertools,库中,print
From: https://www.cnblogs.com/bravesunforever/p/17417692.html

相关文章

  • Jmeter函数助手12-threadNum
    threadNum函数用于获取当前线程编号。该函数没有参数,直接引用即可。 1、线程数可在组件【测试计划->线程组】设置。如下是不传入循环次数的${__threadNum}2、循环次数不会改变线程数而是让一个线程进行循环n次,线程数还是3 ......
  • 函数传参类型为数组时,int*和char*的区别
    1.现象(1)假设有一个int型数组,我们先用int*给函数传参#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>voidtest(int*arr){ arr[1]=8;}intmain(){ intarr[]={7,3,4,6,8,9,1,5,2,10};test(arr); printf("%d\n",arr[0]); printf("%d",arr......
  • 标准库中的生成器函数——用于合并的生成器函数
      1 1importitertools234b=list(itertools.chain('ABC',range(2),[55,434,665,86]))5print('b:',b)#['A','B','C',0,1,55,434,665,86]67b1=list(enumerate("ABC"))......
  • 实验4 函数与异常处理编程
    task1.py1print(sum)2sum=423print(sum)4definc(n):5sum=n+16print(sum)7returnsum8sum=inc(7)+inc(7)9print(sum)运行结果答:不是同一个对象的名称。line1是内置作用域,line3、line11的sum是全局作用域,line7的sum是局部作用域task2_......
  • 实验4 函数与异常处理编程
    实验任务1task1.py实验源码:print(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum)运行测试截图:答:不是同一个对象的名称。line1是内置作用域,line3、line11的sum是全局作用域,line7的sum是局部作用域......
  • Jmeter函数助手11-BeanShell
    BeanShell函数用于简单的计算或者运行编程脚本。表达式求值:填入脚本代码或脚本文件${__BeanShell(source(“test.bsh”))}存储结果的变量名(可选) 1、填入一个计算公式返回计算结果88/22=4,${__BeanShell(88/22,)} ......
  • Jmeter函数助手10-regexFunction
    regexFunction函数用于对上一个请求进行正则表达式提取处理,类似正则表达式。用于从前一个请求搜索结果的正则表达式:填入正则表达式Templateforthereplacementstring,usinggroupsfromtheregularexpression.Formatis$[group]$.Example$1$:填入匹配模板Whichmatch......
  • 实验4 函数与异常处理编程
    一、实验结论: 1.实验任务1:task1.py程序源码:1print(sum)2sum=423print(sum)45definc(n):6sum=n+17print(sum)8returnsum910sum=inc(7)+inc(7)11print(sum)运行结果截图:问题:task1.py源码中,共有4处有python语句print(......
  • day13-14 函数对象与装饰器
    【三】名称空间与闭包【1】名称空间名称空间即存放名字与对象映射/绑定关系的地方。对于x=3,Python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,delx表示清除该绑定关系。在程序执行期间最多会存在三种名称空间(1)内建名称空间伴随python解释器的......
  • day10-12 函数语法铺垫&函数的参数
    第八节函数【一】函数初识【一】函数的基本使用基于前一部分的学习,我们已经能开发一些功能简单的小程序了,但随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差,且程序中需要频繁使用同一功能时,只能重复......