如何基于第二个元素优雅过滤Python二维数组?
Python 优雅过滤元组列表(基于第二个元素)
问题描述
给定由元组组成的列表:
array = [('aaa', 20), ('bbb', 30), ('ccc', 40), ('ddd', 50)]
需要过滤出第二个元素大于等于40的元组,预期结果:
filtered_array = [('ccc', 40), ('ddd', 50)]
希望找到比普通循环更优雅的实现方式。
解决方案
列表推导式(推荐)
这是Python中最简洁直观的写法,一行代码完成过滤,可读性和执行效率都很出色:
array = [('aaa', 20), ('bbb', 30), ('ccc', 40), ('ddd', 50)] filtered_array = [item for item in array if item[1] >= 40]
运行后filtered_array就会得到预期的结果。
filter() 函数配合lambda
如果偏好函数式写法,可以用filter()结合匿名函数,最后转成列表:
filtered_array = list(filter(lambda x: x[1] >= 40, array))
这种方式也能实现需求,但列表推导式在日常开发中更常用,语法更贴近自然语言,理解成本更低。
内容的提问来源于stack exchange,提问作者Bluemarble
相关产品推荐
相关产品推荐

