zoukankan      html  css  js  c++  java
  • Filter

    
    

    python3.6

    class filter(object):
    """
    filter(function or None, iterable) --> filter object

    Return an iterator yielding those items of iterable for which function(item)
    is true. If function is None, return the items that are true.
    """
    
    
    
    
    filter(func,iterator)
        func:自定义或匿名函数中所得值是布尔值,true将保留函数所取到的值,false则取反。
        iterator:可迭代对象。
    
    

    例:

         过滤列表['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']
         只要含有text字符串及将其取出 or 取反。
    s.rfind’text’+1

    Python3中 rfind() 返回字符串最后一次出现的位置,如果没有匹配项则返回-1。

         数字中0是false,0以上的整数都是true,所以s.rfind’text’后会有+1,没找到字符及-1+1=0.
     
    # Filter
     
    li = ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']
    
    # 默认保留函数所取到的值
    print(list(filter(lambda s: s.rfind('text') + 1, li)))
    # 取反,下三个例子是一样的
    print(list(filter(lambda s: not s.rfind('text') + 1, li)))

     

    # Noe 自定义函数实现

    
    
    l1 = ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']
    
    
    def distinguish(l):
        nl = []
        for s in l:
            if s.rfind("text") + 1:
                nl.append(s)
        return nl
    
    
    print(distinguish(l1))


    # Two 自定义高阶函数实现



    l2 = ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']
    
    
    def f(s):
        return s.rfind('text') + 1
    
    
    def distinguish(func, array):
        nl = []
        for s in array:
            if func(s):
                nl.append(s)
        return nl
    
    
    print(distinguish(f, l2))


    # Three 匿名函数实现



    l3 = ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']
    
    
    def distinguish(func, array):
        nl = []
        for s in array:
            if func(s):
                nl.append(s)
        return nl
    
    print(distinguish(lambda s: s.rfind('text') + 1, l3))
    
    

     

    
    
    
    
  • 相关阅读:
    (转)6 个重构方法可帮你提升 80% 的代码质量
    (转)卸载和安装LINUX上的JDK
    (转)一些国外优秀的elasticsearch使用案例
    (转)Redis 集群方案
    (转)理想化的 Redis 集群
    (转)Hprose与WCF在云计算平台Azure上的对决
    (转).NET技术+25台服务器怎样支撑世界第54大网站
    Hbase split的过程以及解发条件
    test
    HTTP和HTTPS详解
  • 原文地址:https://www.cnblogs.com/IMxY/p/6924494.html
Copyright © 2011-2022 走看看