【1.30】filter 函数

#filter 函数

list_a = ["wang_sb","sb_liu","li_sb_zhao","deng"]
#选择依sb 开始的字符串

list_new = []
for i in list_a:
    if i.startswith("sb"):
        list_new.append(i)
print list_new

#简化函数
list_a = ["wang_sb","sb_liu","li_sb_zhao","deng"]
def func(array):
    list_new = []
    for i in list_a:
        if i.startswith("sb"):
            list_new.append(i)
    return list_new
print func(list_a)



#定义多个选择方法
list_a = ["wang_sb","sb_liu","li_sb_zhao","deng"]
def start(x):
    if x.startswith("sb"):
        return x
def end(x):
    if x.endswith("sb"):
        return x
def contain(x):
    if x.count("sb"):
        return x
def center1(x):
    if  x.count("sb") and (not(x.startswith("sb") or x.endswith("sb"))):
        return x

def func1(funcnew,array):
    list_new = []
    for i in array:
        if funcnew(i):
            list_new.append(i)
    return list_new
print func1(center1,list_a)

['li_sb_zhao']


#lambada
list_a = ["wang_sb","sb_liu","li_sb_zhao","deng"]
def func1(funcnew,array):
    list_new = []
    for i in array:
        if funcnew(i):
            list_new.append(i)
    return list_new

print func1(lambda x:x.startswith("sb"),list_a)

print func1(lambda x: x.endswith("sb"),list_a)

print func1(lambda x:x.count("sb"),list_a)

print func1(lambda x:x.count("sb") and (not(x.startswith("sb") or x.endswith("sb"))),list_a)

['sb_liu']
['wang_sb']
['wang_sb', 'sb_liu', 'li_sb_zhao']
['li_sb_zhao']






print  "---------------11111----------------------------------"

list_a = ["wang_sb","sb_liu","li_sb_zhao","deng"]

print list(filter(lambda x:x.startswith("sb"),list_a))

print list(filter(lambda x: x.endswith("sb"),list_a))

print list(filter(lambda x:x.count("sb"),list_a))

print list(filter(lambda x:x.count("sb") and (not(x.startswith("sb") or x.endswith("sb"))),list_a))

['sb_liu']
['wang_sb']
['wang_sb', 'sb_liu', 'li_sb_zhao']
['li_sb_zhao']

filter  就是将可迭代对象做一个函数处理,返回值通过list获取 

否则也是一个迭代器

 

posted @ 2016-03-19 19:05  科学小怪癖  阅读(107)  评论(0)    收藏  举报