Python的filter函数学习

利用filter函数解决列出素数和回数问题
函数等说明
filter(),作用为筛选,接受一个筛选函数和一个序列,筛选函数作用于序列的每一个元素,根据筛选函数的返回值(True或者False)决定该序列中的该元素是否保留,返回值是一个Iterator,该结果可以用list()函数返回一个列表。
lambda表达式:定义方法——以冒号为分隔前面为参数,后面为表达式,如lambda x,y,z:x+y+z def _not_divisible(n): return lambda x: x % n > 0
双冒号作用:【开始:结束:步数】,当开始结束都没有表示整个序列,返回一个序列
实现埃式筛法得到素数序列
埃式筛法:给定一个从2开始自然数范围,每次从序列中筛出第一个数,在删除序列中所有2的倍数,得到新序列,在重复筛选删除操作。

#在该代码中先写一个函数生成器用来生成从3开始的奇数序列,然后写一个筛选函数,在该筛选函数中参数为每次筛选的数,返回一个lambda表达式,该表达式用来删除筛选数的倍数
def f():
    n = 1
    while True:
        n = n + 2
        yeild n
def f1(n):
    return lambda x:x % n > 0
def f2():
    yield 2
    l = f()
    while True:
        n = next(l)
        yield n
        l = filter(f1(n),l)
for m in f2():
    if m < 1000:
    print(m)
    else:
        break


列出回数

#写一个筛选函数,判断一个数是否是回数
def screen(n):
    return str(n) == str(n)[::-1]
output = filter(screen,range(1,1000))
print(list(output))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值