Ich habe Code, der etwa wie folgt aussieht:Der beste Weg, um list.index (möglicherweise nicht vorhanden) in Python zu behandeln?
thing_index = thing_list.index(thing)
otherfunction(thing_list, thing_index)
ok damit vereinfacht ist, aber Sie bekommen die Idee. Jetzt ist thing
möglicherweise nicht wirklich in der Liste, in diesem Fall möchte ich -1 als thing_index
übergeben. In anderen Sprachen ist das, was Sie erwarten würden index()
zurückzukehren, wenn es das Element nicht finden konnte. In der Tat wirft es eine ValueError
.
konnte ich dies tun:
try:
thing_index = thing_list.index(thing)
except ValueError:
thing_index = -1
otherfunction(thing_list, thing_index)
Aber das fühlt sich schmutzig, und ich weiß nicht, ob ValueError
aus einem anderen Grund erhöht werden könnte. Ich kam mit der folgenden Lösung auf Basis von Generator-Funktionen, aber es scheint ein wenig komplex:
thing_index = ([(i for i in xrange(len(thing_list)) if thing_list[i]==thing)] or [-1])[0]
Gibt es einen sauberen Weg, um die gleiche Sache zu erreichen? Nehmen wir an, die Liste ist nicht sortiert.
s/catch/except /: o) –
"... wobei ich -1 als' thing_index' übergeben wollen" - Das ist definitiv unpythonisch. Das Übergeben eines (bedeutungslosen) Tokenwerts, falls eine Operation nicht erfolgreich ist, ist verpönt - Ausnahmen sind hier wirklich der richtige Weg. Zumal 'thing_list [-1]' ein gültiger Ausdruck ist, der den letzten Eintrag in der Liste bedeutet. –
@jellybean: * facepalm * ... Finde den Java-Kodierer: P – Draemon