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']

浙公网安备 33010602011771号