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))
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!