首页 > 解决方案 > 在列表中查找第一个元素和索引匹配条件

问题描述

考虑这个简单的例子

mylist = [-1,-2,3,4,5,6]

for idx, el in enumerate(mylist):
    if el > 0:
        myidx, myel = idx, el
        break

myidx, myel
Out[20]: (2, 3)

我有兴趣在匹配特定条件的python列表中找到第一个索引和相应的第一个元素(这里,这只是> 0)。

在上面的代码中,我使用 if 子句遍历元素enumerate,然后使用 if 子句查找正确的元素。这对我来说看起来很麻烦。有一个更好的方法吗?例如,使用本机 python 函数?

谢谢!

标签: pythonlist

解决方案


像这样的东西应该工作:

l = [-1,-2,3,4,5,6]
list(x > 0 for x in l).index(True)
# Output: 2

要查找所有模式,我们可以使用 python 内置函数

from itertools import filterfalse
f = filterfalse(lambda x: x[1] <= 0, enumerate(l))
print(list(f))
# [(2, 1), (3, 2), (4, 3)]

推荐阅读