python中关于内置函数filter的详解
程序员文章站
2022-04-12 19:18:11
...
这篇文章主要介绍了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']
只要含有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中关于内置函数filter的详解的详细内容,更多请关注其它相关文章!
推荐阅读
-
详解Python中open()函数指定文件打开方式的用法
-
对Python3中的input函数详解
-
对python中矩阵相加函数sum()的使用详解
-
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
-
详解Python中的各种函数的使用
-
Python有用的内置函数divmod,id,sorted,enumerate,input,oct,eval,exec,isinstance,ord,chr,filter,vars,zip
-
Python中 map()函数的用法详解
-
对python中的for循环和range内置函数详解
-
对python中的pop函数和append函数详解
-
对Python中plt的画图函数详解