第一个Python列表索引大于x?

在大于x的列表中find第一个索引的最Python方法是什么?

例如,用

list = [0.5, 0.3, 0.9, 0.8] 

function

 f(list, 0.7) 

会返回

 2. 
 next(x[0] for x in enumerate(L) if x[1] > 0.7) 
 filter(lambda x: x>.7, seq)[0] 
 >>> alist= [0.5, 0.3, 0.9, 0.8] >>> [ n for n,i in enumerate(alist) if i>0.7 ][0] 2 

如果list被sorting,那么bisect_left(alist, value)对于一个大的列表来说比next(i for i, x in enumerate(alist) if x >= value)更快next(i for i, x in enumerate(alist) if x >= value)

 for index, elem in enumerate(elements): if elem > reference: return index raise ValueError("Nothing Found") 

另一个:

 map(lambda x: x>.7, seq).index(True) 

当我的名单很长时,我也有类似的问题。 理解或基于filter的解决scheme将通过整个列表。 itertools.takewhile一旦条件变成第一次就会打破循环:

 from itertools import takewhile def f(l, b): return len([x for x in takewhile(lambda x: x[1] <= b, enumerate(l))]) l = [0.5, 0.3, 0.9, 0.8] f(l, 0.7) 
 >>> f=lambda seq, m: [ii for ii in xrange(0, len(seq)) if seq[ii] > m][0] >>> f([.5, .3, .9, .8], 0.7) 2