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))
 
    

 

 
    
 
   
posted on 2017-05-31 15:40 IlyMxing 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/IMxY/p/6924494.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值