Python 获取满足条件的第一个值的列表索引

Python 获取满足条件的第一个值的列表索引,python,Python,我有一张单子 a = [1.0, 1.2, 1.1, 1.4, 0.1] 从这个列表中,我想得到满足某种标准的第一个值的索引,比如x>1.1 用python做这件事的好方法是什么?您可以这样做: def analyze(l, criteria): for idx in range(len(l)): if criteria(l[idx]): return idx 然后像这样使用它: a = [1.0, 1.2, 1.1, 1.4, 0.1] an

我有一张单子

a = [1.0, 1.2, 1.1, 1.4, 0.1]
从这个列表中,我想得到满足某种标准的第一个值的索引,比如
x>1.1

用python做这件事的好方法是什么?

您可以这样做:

def analyze(l, criteria):
    for idx in range(len(l)):
        if criteria(l[idx]):
            return idx
然后像这样使用它:

a = [1.0, 1.2, 1.1, 1.4, 0.1]
analyze(a, lambda x: x > 1.1)

我不认为它太像蟒蛇。可能有更多的python方法。

您可以将
next
enumerate
结合起来:

>>> next(i for i,x in enumerate(a) if x > 1.1)
1
>>> next(i for i,x in enumerate(a) if x > 1.3)
3

如果你想两者兼得的话。

我认为这可能比其他一些答案更具蟒蛇式——如果这就是你想要的

a = [1.0, 1.2, 1.1, 1.4, 0.1]

def crit(x):
    return x > 1.3

index = None
for i,v in enumerate(a):
    if crit(v):
        index = i
        break

print index

这将返回值,而不是索引。@will:Oh!我懂了。我也同意它不是很像蟒蛇。
a = [1.0, 1.2, 1.1, 1.4, 0.1]

def crit(x):
    return x > 1.3

index = None
for i,v in enumerate(a):
    if crit(v):
        index = i
        break

print index