TOP

Filter
2017-10-09 16:42:47 】 瀏覽:10356
Tags:

 
 

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:自定義或匿名函數中所得值是布爾值优乐棋牌app下载,true將保留函數所取到的值优乐棋牌app下载,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))
 
 

 

 
 

請關注公眾號獲取更多資料



】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇農大圖書館-新聞公告反爬蟲 下一篇Python算術運算符