首页 > 解决方案 > 过滤列表两次。哪种方式最方便?

问题描述

这可能是微不足道的,但我没有找到一个不会减慢代码速度的干净解决方案。

我将使用数组“a”作为示例。输入

a = [[0,1], [0,2], [0,3], [1,2], [1,1]]

从这个数组中,我想得到这个输出,即每个 a[:,0] 的 max[:,1] 值。

b = [[0,3], [1,2]]

一个肮脏的方法是沿着 a[:,0] 迭代。

标签: python

解决方案


您可以使用以下功能groupby

from itertools import groupby

a = [[0,1], [0,2], [0,3], [1,2], [1,1]]

[max(g) for _, g in groupby(sorted(a), key=lambda x: x[0])]
# [[0, 3], [1, 2]]

推荐阅读