Die list.index(x)Funktion gibt den Index in der Liste des ersten Elements zurück, dessen Wert ist x.
Gibt es eine Funktion, list_func_index()ähnlich der index()Funktion, die eine Funktion hat f(), als Parameter? Die Funktion f()wird für jedes Element eder Liste ausgeführt, bis sie f(e)zurückgegeben wird True. Dann list_func_index()gibt den Index von e.
Codeweise:
>>> def list_func_index(lst, func):
for i in range(len(lst)):
if func(lst[i]):
return i
raise ValueError('no element making func True')
>>> l = [8,10,4,5,7]
>>> def is_odd(x): return x % 2 != 0
>>> list_func_index(l,is_odd)
3
Gibt es eine elegantere Lösung? (und ein besserer Name für die Funktion)
map(f, seq)anstelle von[f(x) for x in seq]ist. Mit anderen Worten, es ist idiomatisch. Und wie bei anderen Redewendungen ist es nicht einfach, bis es Teil Ihres Wortschatzes ist.