【发布时间】:2012-04-09 18:02:18
【问题描述】:
查找/返回符合特定标准的第一个列表项的最优雅、最有效的方法是什么?
例如,如果我有一个对象列表,我想获取属性为obj.val==5 的对象中的第一个对象。我当然可以使用列表推导,但这会产生 O(n) 并且如果 n 很大,那就是浪费。一旦满足条件,我也可以使用带有break 的循环,但我认为可能会有更pythonic/优雅的解决方案。
【问题讨论】:
-
如果要获取item和index怎么办?
-
@CharlieParker, 要同时获取索引和项目,请使用 enumerate() - next((idx, obj) for idx, obj in enumerate(objs) if obj.val==5)