Python标准库之itertools库的使用方法

 

说明:我们平时用的基本就是range了,那么为什么还要用itertools呢?

https://www.jb51.net/article/123094.htm

迭代器(生成器)在Python中是一种很常用也很好用的数据结构,比起列表(list)来说,迭代器最大的优势就是延迟计算,按需使用,从而提高开发体验和运行效率,以至于在Python 3中map,filter等操作返回的不再是列表而是迭代器。

话虽这么说但大家平时用到的迭代器大概只有range了,而通过iter函数把列表对象转化为迭代器对象又有点多此一举,这时候我们今天的主角itertools就该上场了。itertools中的函数大多是返回各种迭代器对象,其中很多函数的作用我们平时要写很多代码才能达到,而在运行效率上反而更低,毕竟人家是系统库。目前主要用来循环的。

注意:迭代器有点像列表,但是不是列表,它是采用现用现生成的机制,

注意下面:

import itertools
x = itertools.accumulate(range(10))
print(list(x)) # 第一次打印结果:[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]
print(list(x)) # 第二次打印结果:[] 是个空列表

itertools常用功能:

'''累加:生成的数与前面一个数相加'''
import itertools
for i in itertools.accumulate(range(10)):
    print(i)


''' 连接多个列表或者迭代器:像append函数,追加进去  '''
x = itertools.chain(range(3), range(4), [3,2,1])
print(list(x)) # [0, 1, 2, 0, 1, 2, 3, 3, 2, 1]

''' 求列表或生成器中指定数目的元素不重复的所有组合:自己和自己的组合'''
x = itertools.combinations(range(4), 3) # 从range(4)中任意选出来3个数进行组合
print(list(x))  # [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]

'''  允许重复元素的组合,自己和自己的组合 ''' 
x = itertools.combinations_with_replacement('ABC', 2)
print(list(x)) # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]

'''  组合:两个迭代器的组合 ''' 
x = itertools.product('ABC', range(3))
print(list(x)) # [('A', 0), ('A', 1), ('A', 2), ('B', 0), ('B', 1), ('B', 2), ('C', 0), ('C', 1), ('C', 2)]

''' 生成指定数值的,指定个数的迭代器  ''' 
x = itertools.repeat(1, 5) #生成5个数,每个数都是1
print(list(x)) # [1, 1, 1, 1, 1]

'''   ''' 


'''   ''' 

 

你可能感兴趣的:(Python标准库之itertools库的使用方法)