第一个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