• filter()函数


     

     

     

    高阶函数——filter()

     

     

    1.  filter()函数用于过滤序列,作用是从一个序列中筛选出符合条件的元素。

    2.  filter()把传入的函数一依次作用于每个元素,然后根据返回值是 True 还是 False 来判断是否留下该元素。

    3.  filter()函数第一个参数接收一个函数,第二个参数接收一个序列。

    4.  filter()函数返回的是一个 Iterator,也就是一个惰性序列,所以只有在取 filter()结果的时候,才能真正的筛选并每次返回下一个筛选出的元素。

    例如,选出一个序列中的奇数:

    >>> def is_odd(n):
    	return n%2==1
    
    >>> f=filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
    >>> f
    <filter object at 0x00000233C46F2670>
    #filter()函数返回的是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list >>> list(f) [1, 3, 5, 7, 9]

      

    把一个序列中的空字符串删掉:

    >>> def not_empty(s):
    	return s and s.strip()
    
    >>> list(filter(not_empty,['a','','b',None,'c',' ']))
    ['a', 'b', 'c']
    

      

    5.  用 filter()求素数

    埃氏筛法:

    def _int_iter():#生成器生成从3开始的无限奇数序列
        n = 1
        while True:
            n = n + 2
            yield n
     
    def  _not_divisible(n):#定义筛选函数
        return lambda x:x % n > 0
     
    def primes():
        yield 2          #先返回一个2
        it = _int_iter() # 初始序列
        while True:
            n = next(it) # 返回序列的第一个数
            yield n
            it = filter(_not_divisible(n), it) # 构造新序列
    for n in primes():#构造循环条件,使之可以输出任何范围的素数序列
        if n < 1000:
            print(n)
        else:
            break
    

      

  • 相关阅读:
    面向对象1 继承与接口
    简易版爬虫(豆瓣)
    调用模块与包
    正则表达式2 以及configparser模块,subprocess模块简单介绍
    正则表达式(re模块)
    sys,logging,json模块
    常用模块(time,os,random,hashlib)
    内置函数与匿名函数
    day 19 yeild的表达式 面向过程 内置函数
    mysql中写存储过程加定时任务
  • 原文地址:https://www.cnblogs.com/canneddream/p/14210959.html
Copyright © 2020-2023  润新知