私はリストを持っています
a = [1.0, 1.2, 1.1, 1.4, 0.1]
そのリストから、いくつかの基準を満たす最初の値のインデックスを取得したいと思います。x > 1.1
Pythonでこれを行う良い方法は何でしょうか?
私はリストを持っています
a = [1.0, 1.2, 1.1, 1.4, 0.1]
そのリストから、いくつかの基準を満たす最初の値のインデックスを取得したいと思います。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
また
>>> next((i,x) for i,x in enumerate(a) if x > 1.3)
(3, 1.4)
両方したい場合。
あなたはこれを行うことができます:
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)
私はそれがあまりにもpythonicだとは思わない。おそらくもっとpythonicな方法があります。
これはおそらく、他のいくつかの回答よりも少しpythonicだと思います-それがあなたの求めているものである場合。
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