学习笔记——itertools模块
Posted 别呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记——itertools模块相关的知识,希望对你有一定的参考价值。
官方描述:Functional tools for creating and using iterators.即用于创建高效迭代器的函数。
函数目录
无限迭代器 | 有限迭代器 | 组合生成器 |
---|---|---|
count | chain | product |
cycle | compress | permutations |
repeat | dropwhile | |
filterfalse | combinations | |
groupby | combinations_with_replacement | |
islice | ||
starmap | ||
takewhile | ||
tee | ||
zip_longest |
1、chain
itertools.chain(*iterables)
: 将多个序列作为一个单独的序列返回。
示例:
import itertools
for i in itertools.chain('i', 'love', 'python'):
print(i,end=' ')
------------------
结果:
i l o v e p y t h o n
2、combinations
itertools.combinations(iterable, r)
:返回指定长度的”组合”
示例:
import itertools
for i in itertools.combinations('abc', 2):
print(i,end=' ')
---------------------
结果:
('a', 'b') ('a', 'c') ('b', 'c')
3、combinations_with_replacement
itertools.combinations_with_replacement(iterable, r)
:返回指定长度的“组合”,组合内元素可重复
示例:
import itertools
for i in itertools.combinations_with_replacement('abc', 2):
print(i,end=' ')
----------------------
结果:
('a', 'a') ('a', 'b') ('a', 'c') ('b', 'b') ('b', 'c') ('c', 'c')
4、compress
itertools.compress(data, selectors)
:返回selector为True的data对应元素
示例:
import itertools
for i in itertools.compress('abcd', [1, 0, 1, 0]):
print(i,end=' ')
----------------------
结果:
a c
5、count
itertools.count(start=0,step=1)
:返回以start开始,step递增的序列,无限递增
示例:
import itertools
for i in itertools.count(start=0, step=2):
print(i,end=' ')
----------------------
结果:
a b a b···
6、cycle
itertools.cycle(iterable)
:将迭代器进行无限迭代
示例:
import itertools
for i in itertools.cycle('ab'):
print(i,end=' ')
----------------------
结果:
a b a b···
7、dropwhile
itertools.dropwhile(predicate, iterable)
:直到predicate为真,就返回iterable后续数据, 否则drop掉
示例:
import itertools
for i in itertools.dropwhile(lambda x: x<5, [2,1,6,8,2,1]):
print(i,end=' ')
----------------------
结果:
6 8 2 1
8、filterfalse
itertools.ifilter(predicate, iterable)
:返回predicate结果为True的元素迭代器,如果predicate为None,则返回所有iterable中为True的项
示例:
import itertools
for i in itertools.filterfalse(lambda x: x % 2, range(10)):
print(i,end=' ')
----------------------
结果:
0 2 4 6 8
9、groupby
itertools.groupby(iterable[,key])
:返回一组(key,itera),key为iterable的值,itera为等于key的所有项
示例:
import itertools
for key,value in itertools.groupby('aabbbc'):
print(key,':',list(value),end=' ')
----------------------
结果:
a : ['a', 'a'] b : ['b', 'b', 'b'] c : ['c']
10、islice
itertools.islice(iterable, start,stop[,step])
:相当于迭代器方式的切片操作
示例:
import itertools
for i in itertools.islice('abcdefg', 1, 4, 2):
print(i,end=' ')
----------------------
结果:
b d
11、permutations
itertools.premutations(iteravle[,r])
:返回长度为r的排列
示例:
import itertools
for i in itertools.permutations('abc', 2):
print(i,end=' ')
----------------------
结果:
('a', 'b') ('a', 'c') ('b', 'a') ('b', 'c') ('c', 'a') ('c', 'b')
12、product
itertools.product(*iterable[,repeat])
:返回指定长度的所有组合,可理解为笛卡尔乘积
示例:
import itertools
for i in itertools.product('abc', repeat=2):
print(i,end=' ')
----------------------
结果:
('a', 'a') ('a', 'b') ('a', 'c') ('b', 'a') ('b', 'b') ('b', 'c') ('c', 'a') ('c', 'b') ('c', 'c')
13、repeat
itertools.repeat(object,[,times])
:不停的返回object对象,如果指定了times,则返回times次
示例:
import itertools
for i in itertools.repeat('a', 2):
print(i,end=' ')
----------------------
结果:
a a
14、starmap
itertools.starmap(function,iterable)
:返回function(iter)的值,iter为iterable的元素
示例:
import itertools
for i in itertools.starmap(lambda x,y: x*y,[(1, 2),(3, 4)]):
print(i,end=' ')
----------------------
结果:
2 12
15、takewhile
itertools.takewhile(predicate,iterable)
:如果predicate为真,则返回iterable元素,如果为假则不再返回,break
示例:
import itertools
for i in itertools.takewhile(lambda x: x<5,[1,3,5,6]):
print(i,end=' ')
----------------------
结果:
1 3
16、tee
itertools.tee(iterable, n=2)
: 用于从 iterable 创建 n 个独立的迭代器,以元组的形式返回, n 的默认值是 2
示例:
import itertools
for i in itertools.tee('abcd'):
print(list(i),end=' ')
----------------------
结果:
['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'd']
17、zip_longest
itertools.zip_longest(*iterables, fillvalue=None)
:若可迭代对象的长度未对齐,如果有指定 fillvalue ,则会用其填充缺失的值,否则为 None 。
示例:
import itertools
for i in itertools.zip_longest('ABCD', 'xy'):
print(list(i),end=' ')
----------------------
结果:
['A', 'x'] ['B', 'y'] ['C', None] ['D', None]
以上是关于学习笔记——itertools模块的主要内容,如果未能解决你的问题,请参考以下文章