D16-09 map函数filter函数

movie_people=['alex','sb_wupeiqi','sb_yuanhao','sb_alex']
ret = []
for i in movie_people:
    if not i.startswith('sb'):
        ret.append(i)
print(ret)
输出结果
['alex']
movie_people=['alex','sb_wupeiqi','sb_yuanhao','sb_alex']
def sb_show(n):
    return n.startswith('sb')

def filter_test(func,array):
    ret = []
    for p in array:
        if  not func(p):
            ret.append(p)
    return  ret
res = filter_test(sb_show,movie_people)
print(res)
输出结果
['alex']

 

用匿名函数实现过滤

movie_people=['alex','sb_wupeiqi','sb_yuanhao','sb_alex']

lambda n:n.startswith('sb')
def filter_test(func,array):
    ret = []
    for p in array:
        if  not func(p):
            ret.append(p)
    return  ret
res = filter_test(lambda n:n.startswith('sb'),movie_people)
print(res)

 

 

movie_people=['alex','sb_wupeiqi','sb_yuanhao','sb_alex']
print(list(filter(lambda n:n.startswith('sb'),movie_people))) #同map函数,print((filter(lambda n:n.startswith('sb')
,movie_people)))打印出的只是可迭代的地址,需要用list转换
输出结果 ['sb_wupeiqi', 'sb_yuanhao', 'sb_alex'] #因为filter函数过滤的是以sb开始的字符串,判断为ture会添加到list列表中

 如果要选择不是以sb开始的字符串,可以用如下代码:

movie_people=['alex','sb_wupeiqi','sb_yuanhao','sb_alex']
print(list(filter(lambda n: not n.startswith('sb'),movie_people)))
输出结果
['alex']

  

 

posted @ 2018-08-08 22:27  犀利的攻城狮  阅读(125)  评论(0)    收藏  举报