from itertools import compress
"""
compress(data, selectors)
根据selectors中的真值,返回data中对应的元素
"""
data =['a','b','c','d','e','f']
selectors=[1,0,1,0,0,1]for i in compress(data , selectors):print(i)'''
a
c
f
'''
dropwhile 数据剔除
from itertools import dropwhile
"""
dropwhile(function, iterable)
iterable中的元素执行function为False时,开始迭代序列(即返回后面的元素)
function 为True则去除
取后半段
"""for i in dropwhile(lambda x: x <5,[4,1,5,0,1]):print(i)'''
5
0
1
'''
takewhile 数据选取
from itertools import takewhile
from itertools import count
"""
takewhile(key, iterable)
描述:返回序列,当key为true时截止
取前半段
"""
my_iter = count(1)for i in takewhile(lambda x: x <5, my_iter):print(i)'''
1
2
3
4
'''
filterfalse 数据过滤
from itertools import filterfalse
"""
filterfalse(function, iterable)
function 返回True或者False
返回不符合function条件的项,如果function为None,返回iterable中为False的元素
"""for i in filterfalse(lambda x: x <10,[1,2,10,9,20]):print(i)'''
10
20
'''for i in filterfalse(None,[1,0,10,False,[]]):print(i)'''
0
False
[]
'''
islice 数据切片
from itertools import islice
from itertools import count
"""
islice(iterable, start, stop, step)
返回序列iterable中从start索引开始,到stop索引结束的子序列
没有start时默认start为0
"""for i in islice(count(1),3,5):print(i)'''
4
5
'''for i in islice(count(1),0,10,2):print(i)'''
1
3
5
7
9
'''
starmap 数据映射,和map类似
from itertools import starmap
"""
starmap(function, seq)
对seq中的每一项执行function函数
说明:对iterable进行映射操作,参考map函数。两者区别在于:
func有多个参数时,startmap为func(*arg)用的是可变参数,
map为func(arg1,arg2)用的是位置参数
"""
srce_list =[[1,2],[10,22],[5,9]]for i in starmap(max,[[1,2],[10,22],[5,9]]):print(i)'''
2
22
9
'''print(list(map(max, srce_list)))# 和map函数貌似没有区别''' [2, 22, 9] '''