基于第二元素过滤Python 2D数组



我有一个python 2D数组,如下所示:

array = [('aaa', 20), ('bbb', 30), ('ccc', 40), ('ddd', 50)]

我想根据每组中的第二个值来过滤这个数组。例如,我只想保留具有第二项>=40

预期输出:

filtered_array =  [('ccc', 40), ('ddd', 50)]

我可以通过循环来实现这一点,但有没有一种优雅的过滤方式?

您可以使用filter,但在引擎盖下,它仍然使用循环,因为还有其他方法吗?

list(filter(lambda x: x[1] >= 40, array))
#[('ccc', 40), ('ddd', 50)]

或者您可以使用itertools.filterfalse(带有相同的脚注(:

list(itertools.filterfalse(lambda x: x[1] < 40, array))
#[('ccc', 40), ('ddd', 50)]

清除:

[x for x in xs if x[1] >= 40]

不太清楚:

list(filter(lambda x: x[1] >= 40, xs))

Python级别没有循环:

def f(xs):
try:
x = next(xs)
except StopIteration:
return
if x[1] >= 40:
yield x
yield from f(xs)
list(f(iter(xs)))

最新更新