1
2
3
4
5
6
7
|
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
1
2
3
4
5
6
|
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 自定义函数
1
2
3
4
5
6
7
8
9
10
11
12
|
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 自定义高阶函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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 匿名函数
1
2
3
4
5
6
7
8
9
10
11
|
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))
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!