zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    select和epoll的区别
    Epoll导致的selector空轮询
    2.集合框架中的泛型有什么优点?
    java的语法基础(二)
    17-文本属性和字体属性
    15-浮动
    16-margin的用法
    14-块级元素和行内元素
    12-简单认识下margin
    day15 什么是递归/递归与回溯
  • 原文地址:https://www.cnblogs.com/canneddream/p/14210959.html
Copyright © 2011-2022 走看看