内置生成器函数dropwhile()和takewhile()
对序列内的第一个元素进行逐个判断, 决定去留,返回序列
t
dropwhile(func, seq)
把seq的第一个元素传入func,如果func返回真,则返回删除第一个元素后其余元素的序列, 如果func返回假,则返回所有元素, 不删除.
DEMO
from itertools import dropwhile
li = [1,2,3]
r1 = dropwhile(lambda x: x == 1, li) # 返回[2, 3]
r2 = dropwhile(lambda x: x == 2, li) # 返回[1, 2, 3]
print(list(r1), list(r2))
takewhile(func seq)
如果的一个元素传入func的返回值为真则返回第一个元素的序列, 否则返回空序列
DEMO
from itertools import takewhile
li = [1, 2, 3]
r1 = takewhile(lambda x: x == 1, li) # 返回[1]
r2 = takewhile(lambda x: x == 2, li) # 返回[]
print(list(r1), list(r2))