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))感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
  jianxm    2020-06-13  
   luofuIT成长记录    2020-03-27  
   changjiang    2017-08-03  
   yFifhting    2015-04-13  
   PHP基础学习    2017-03-06  
   skyGAYD    2017-04-09  
   小小天下飞    2019-08-23  
   kobeyan    2012-11-22  
   hhhkhhh    2017-04-09  
   honeyth    2017-03-06  
   麦盟Maimob    2016-11-23  
   Balalala    2015-04-13  
   skyGAYD    2015-03-28  
   何双江yarshray    2015-01-26  
   Jiutocrx    2014-08-05  
   xiaohuli    2013-07-09  
 