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 e
der 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.