首頁  >  文章  >  後端開發  >  python中關於內建函數filter的詳解

python中關於內建函數filter的詳解

黄舟
黄舟原創
2017-06-04 10:17:141425瀏覽

這篇文章主要介紹了python 內建函數filter的相關資料,需要的朋友可以參考下

python 內建函數filter

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']
  ##字串及將其取出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中關於內建函數filter的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn