filter()和map()类似,接受一个函数和一个序列,函数作用于每个元素,返回true保留元素,返回false丢弃元素。
例子
def m(n):
return n%2==1
list(filter(m,[1,2,2,3,5,8,9,6,5]))
关键在于筛选函数
素数
def x():
n=1
while True:
n=n+2
yield n #生成一个技术序列
def y(n):
return lambda w:w%n>0 #筛选函数,为什么是 w:w%n>0而不是 n:w%n>0
def primes():
yield 2
z=x()
while True:
n=next(z)
yield n
z=filter(y(n),z)
for n in primes():
if n<10:
print(n)
else:
break
sorted:排序,也可以接收一个KEY函数然后排序
sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]