首页 > 其他分享 >标准库中的生成器函数——用于重新排列元素的生成器函数

标准库中的生成器函数——用于重新排列元素的生成器函数

时间:2023-05-20 21:44:29浏览次数:35  
标签:group 函数 生成器 list itertools 重新排列 print groupby

 

 

 

 

 

1

注意,itertools.groupby假定输入的可迭代对象要使用分组标准排序;即使不排序,至少也要使用指定的标准分组各个元素。

 

 

 1 #itertools.groupby函数的用法
 2 import itertools
 3 
 4  
 5 
 6 k1 = list(itertools.groupby('LLLLAAGGG'))
 7 print('k1:', k1)
 8 # [('L', <itertools._grouper object at 0x000001E0AFBE5880>), ('A', <itertools._grouper object at 0x000001E0AFBE52B0>), ('G', <itertools._grouper object at 0x000001E0AFBE5160>)]
 9 print('\n 下面这种为什么返回空:')
10 for i, j in k1:
11     print(i, '->', list(j))  #这种返回的j是空列表,不知道是为什么
12  
13 print('\n 为什么这种返回的就有内容:')
14 for char, group in itertools.groupby('LLLLAAAGG'): 
15     print(char, '->', list(group))
16        
17 
18 print('\n animal未排序时返回的结果格式:')
19 animals = ['duck', 'eagle', 'rat', 'giraffe', 'bear', 'bat', 'dolphin', 'shark', 'lion']
20 for length, group in itertools.groupby(animals, key = len):
21     print(length, '->', list(group))
22 
23 animals.sort(key = len)
24 print('\n排序后的animal: \n',animals, '\n')
25 
26 
27 print('\n animal升序后返回的结果格式:')
28 for length, group in itertools.groupby(animals, key = len):
29     print("升序后返回的结果:",length, '->', list(group))
30 
31 
32 print('\n animal降序后返回的结果格式:')
33 for length, group in itertools.groupby(reversed(animals), len):
34     print( length, '->', list(group))
35 
36 
37 
38 
39 
40 
41 
42 #itertools.tee 函数产出多个生成器(这个是需要定义返回几个吗),每个生成器都可以产出输入的各个元素
43 print('\n\n 下面测试itertools.tee函数:')
44 r = list(itertools.tee('ABC'))
45 print('返回2个生成器:',r)
46 
47 g1, g2 = itertools.tee('ABC')
48 print(next(g1))
49 print(next(g2))
50 print(next(g2))
51 print(list(g1))
52 print(list(g2))
53 
54 r2 = list(zip(*itertools.tee('ABC')))
55 print(r2)
56 
57 
58 
59 print('\n返回的结果格式-元组,使用* 元组拆包:', itertools.tee('ABC'))
60 # (<itertools._tee object at 0x000001E0AFB92FC0>, <itertools._tee object at 0x000001E0AE868900>)

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

标签:group,函数,生成器,list,itertools,重新排列,print,groupby
From: https://www.cnblogs.com/bravesunforever/p/17417841.html

相关文章

  • Jmeter函数助手16-FiletoString
    FiletoString函数用于获取文本文件的值,一次读取一行,可读取多个文件。输入文件的全路径:填入文件路径存储结果的变量名(可选)Startfilesequencenumber(opt):初始序列Finalfilesequencenumber(opt):终止序列1、StringFromFile函数跟组件CSV数据文件设置的区别是:CSV数据......
  • Jmeter函数助手15-FiletoString
    FiletoString函数用于一次读取整个文件值。输入文件的全路径:填入文件路径Fileencodingifnottheplatformdefault(opt):读取文件的编码格式,不传则默认使用系统格式存储结果的变量名(可选)1、首先我的文件内容是4行2列,如下2、调用FiletoString函数会一次性输入多行多列的......
  • 实验4 函数与异常处理编程
    1.实验任务11print(sum)2sum=423print(sum)45definc(n):6sum=n+17print(sum)8returnsum910sum=inc(7)+inc(7)11print(sum)问题:不是。line1中的sum是指Python的内置函数;line3中的sum指的是line2中的全局变量sum;line7中......
  • Jmeter函数助手13-threadGroupName
    threadGroupName函数获取当前线程组的名称。该函数没有参数,直接引用即可。1、返回当前线程组的名称......
  • 标准库中的生成器函数——用于扩展元素的生成器函数
      1  combinations:组合数最少的;组合数的下限,重复没有意义(所以不存在AA,BB,CC这种组合),元素的顺序也没意义(AB和BA是一种组合);product:返回笛卡尔积,组合数最多的,组合数的上限,重复和元素的顺序都有意义;combinations_with_replacement:重复有意义(所以存在AA,BB,CC这种组合),元......
  • 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是局部作用域......