使用列表生成器对列表进行筛选分组(枚举体方法和函数方法)

通过enumerate来获取元素的编号,再通过编号获得过滤器中的布尔值,然后根据布尔值作为判断条件,在列表生成式中把同一类的元素取出来。代码如下:

lst = ['beep','boop','foo','bar']
filters = [True,False,False,True]

def bifurcate(lst,filters):
	return [
		[ x for i,x in enumerate(lst) if filters[i]==True],
		[ x for i,x in enumerate(lst) if filters[i]==False]
	]

print(bifurcate(lst,filters))

输出结果如下:

[['beep', 'bar'], ['boop', 'foo']]
[Finished in 0.6s]

我们也可以使用函数的方法来实现筛选功能,只要注意我们判断的核心是有一个用于if语句的布尔表达式。

def bifurcate(lst,fn):
	return[
		[ x for x in lst if fn(x)],
		[ x for x in lst if not fn(x)]
	]

lst = ['up','Python','umbrella','allan']
results = bifurcate(lst, lambda x: x[0] == 'u')
print(results)

输出如下:

[['up', 'umbrella'], ['Python', 'allan']]
[Finished in 0.6s]
发布了170 篇原创文章 · 获赞 9 · 访问量 4542

猜你喜欢

转载自blog.csdn.net/weixin_41855010/article/details/104483116