标准库中的生成器函数

用于过滤的生成器函数

1、itertools.compress(it, selector_it)

并行处理两个可迭代对象;如果select_it中的元素是真值,产出it中对应的元素

2、itertools.dropwhile(predicate, it)

处理it,跳过predicate的计算结果为真值的元素,然后产出剩下的各个元素

3、filter(predicate, it)

把it中的各个元素传给predicate,如果predicate(item)返回真值,那么产生对应的元素;如果predicate是None,那么只产出真值元素。

4、itertools.filterfalse(predicate, it)

与filter函数的作用类似,不过predicate的逻辑是相反的,predicate返回假值时产生对应的元素

5、itertools.islice(it, stop)或islice(it, start, stop, step=1)

产出的it切片,作用类似于s[: stop]或s[start: stop: step],不过it可以是任何可迭代的对象,而且这个函数实现的是惰性操作

6、itertools.takewhile(predicate, it)

predicate返回真值时产出对应的元素,然后立刻停止,不再继续检查

 1 def vowel(c):
 2     return c.lower() in 'aeiou'
 3 
 4 
 5 print(list(filter(vowel, 'Aardvark')))
 6 # ['A', 'a', 'a']
 7 import itertools
 8 
 9 print(list(itertools.filterfalse(vowel, 'Aardvark')))
10 # ['r', 'd', 'v', 'r', 'k']
11 print(list(itertools.dropwhile(vowel, 'Aardvark')))
12 # ['r', 'd', 'v', 'a', 'r', 'k']
13 print(list(itertools.takewhile(vowel, 'Aardvark')))
14 # ['A', 'a']
15 print(list(itertools.islice('Aardvark', 4)))
16 # ['A', 'a', 'r', 'd']
17 print(list(itertools.islice('Aardvark', 4, 7)))
18 # ['v', 'a', 'r']
19 print(list(itertools.islice('Aardvark', 1, 7, 2)))
20 # ['a', 'd', 'a']

猜你喜欢

转载自www.cnblogs.com/wuzdandz/p/10426956.html
今日推荐