python 内置函数filter
python内置函数filter
classfilter(object): """ filter(functionorNone,iterable)-->filterobject Returnaniteratoryieldingthoseitemsofiterableforwhichfunction(item) istrue.IffunctionisNone,returntheitemsthataretrue. """
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(lambdas:s.rfind('text')+1,li)))
#取反,下三个例子是一样的
print(list(filter(lambdas:nots.rfind('text')+1,li)))
#Noe自定义函数
l1=['text_test_text','test_text_1','text_test_2','3_test_text','test_test']
defdistinguish(l):
nl=[]
forsinl:
ifs.rfind("text")+1:
nl.append(s)
returnnl
print(distinguish(l1))
#Two自定义高阶函数
l2=['text_test_text','test_text_1','text_test_2','3_test_text','test_test']
deff(s):
returns.rfind('text')+1
defdistinguish(func,array):
nl=[]
forsinarray:
iffunc(s):
nl.append(s)
returnnl
print(distinguish(f,l2))
#Three匿名函数
l3=['text_test_text','test_text_1','text_test_2','3_test_text','test_test']
defdistinguish(func,array):
nl=[]
forsinarray:
iffunc(s):
nl.append(s)
returnnl
print(distinguish(lambdas:s.rfind('text')+1,l3))
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!