找到/返回符合特定标准的第一个列表项的最优雅和有效的方法是什么?
例如,如果我有一个对象列表,我想得到属性的第一个对象obj.val==5.我当然可以使用列表理解,但这会产生O(n),如果n很大,那就太浪费了.break一旦达到标准,我也可以使用循环,但我认为可能有更多的pythonic /优雅解决方案.
我有一个数字数组,例如“ 17.2、19.1、20.4、47.5、34.2、20.1、19”
试图找出一种方法来选择第一个数字超过20(并且没有一个跟随),最后一个数字超过20,然后再降至低于20。
到目前为止,我只尝试选择20到23之间的数字,但这并不理想(例如,请参见代码)
nums = [15, 16.2, 17.1, 19.7, 20.2, 21.3, 46.2, 33.7, 27.3, 21.2, 20.1, 19.6]
test_lst = [x for x in nums if x >=20 and x<=23]
print test_lst
Run Code Online (Sandbox Code Playgroud)
输出与预期的一样,但我想仅获得第一个和最后一个超过20的数字,而没有其余的数字。我意识到这对于大多数新手来说可能微不足道