python - 过滤列表两次。哪种方式最方便?
问题描述
这可能是微不足道的,但我没有找到一个不会减慢代码速度的干净解决方案。
我将使用数组“a”作为示例。输入
a = [[0,1], [0,2], [0,3], [1,2], [1,1]]
从这个数组中,我想得到这个输出,即每个 a[:,0] 的 max[:,1] 值。
b = [[0,3], [1,2]]
一个肮脏的方法是沿着 a[:,0] 迭代。
解决方案
您可以使用以下功能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]]
推荐阅读
- regex - 如何使用 GitLab 插件仅允许主分支触发 Jenkins 上的构建
- javascript - 通过 spotify web api 和 javascript 播放歌曲的问题
- java - 如何在 Intellij IDEA 中折叠块注释
- powershell - Copy-Item:找不到与参数名称“FromSession”匹配的参数
- python - 如何使用 Content-MD5 将对象放入 s3
- c# - 在 C# 中使用正则表达式从字符串中提取带有可选特殊字符的代码
- node.js - 从节点返回数据而不是承诺
- javascript - Bootstrap、手风琴的堆叠导航以及 JSFiddle 和 TryIt 的问题
- mysql - 第一次运行时未存储的表之间的关系
- cmake - 链接特定的共享对象