zoukankan      html  css  js  c++  java
  • Python之filter函数

    描述

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

    语法

    以下是 filter() 方法的语法:

    filter(function, iterable)

    参数

    • function -- 判断函数。
    • iterable -- 可迭代对象。

    返回值

    返回列表。

    先给一个需求大家想一下怎么写?

    过滤到s开头的人

    movie_people=['s_lal','wupeiqi','s_wu','s_al']
    #可能你最先想到的是用for循环处理这个问题
    movie_people=['s_lal','wupeiqi','s_wu','s_al']
    # ret=[]
    # for p in movie_people:
    #     if not p.startswith('s'):
    #         ret.append(p)
    # print ret
    

     转换成函数的写法:

    #特定的功能放到函数当中
    def filter_test(array):
        ret=[]
        for p in array:
            if not p.startswith('s'):
                ret.append(p)
        return ret
    res = filter_test(movie_people)
    print res
    

     然后问题又来了,上面方法不够精简,又想到了下面的方法

    def s_show(n):
        return n.startswith('s')
    def filter_test(func,array):
        ret=[]
        for p in array:
            if not func(p):
                ret.append(p)
        return ret
    res = filter_test(s_show,movie_people)
    print res
    

     还是不够精简,学过匿名函数之后,完全可以用匿名函数代替

    
    
    def filter_test(func,array):
        ret=[]
        for p in array:
            if not func(p):
                ret.append(p)
        return ret
    res = filter_test(lambda x: not x.startswith('s'),movie_people)
    print list(res)
    
    
    

     用filter函数写

    movie_people=['s_lal','wupeiqi','s_wu','s_al']
    res2 = filter(lambda x:not x.startswith('s'),movie_people)
    print list(res2)
    

    :

     
     
  • 相关阅读:
    良好的三元组(求已排列好的数组中各个元素的排位)
    山理工oj 2556传说中的数据结构
    山理oj 1177 时间间隔
    山理oj1525:字符统计2
    linux常用命令
    多线程并发教程
    合理设置线程数量
    Java多线程处理任务(摘抄)
    解决2013Lost connection to MySQL server during query错误方法
    javaMail邮件发送
  • 原文地址:https://www.cnblogs.com/wangyue0925/p/8945793.html
Copyright © 2011-2022 走看看