Hier sind zwei Funktionen, die (ich dachte) sollte das gleiche tun, aber eigentlich nicht.Index mit Liste Verständnis in einer Liste in Python erhalten
Es scheint, dass mit dem Listenverständnis, der Index, der genommen wird, der erste ist, der entsprechen könnte, also, wenn Sie den gleichen Wert bei unterschiedlichem Index haben, gibt es eine Mehrdeutigkeit.
Gibt es eine Möglichkeit, das Listenverständnis in filter2
zu ändern, damit das gleiche Ergebnis wie in filter1
erhalten?
L = [98.75011926342906,
97.8178200008178,
98.6138182016438,
98.55520874507613,
98.25262038791283,
98.75011926342906,
99.06770073738875,
98.66970163697574,
98.56611283001895,
98.47751713985852,
98.66970163697574,
97.8178200008178]
def filter1(L, threshold=98.7):
items = []
for i in range(len(L)):
if L[i] < threshold:
items.append(i)
return items
def filter2(L, threshold=98.7):
items = [L.index(x) for x in L if x <= threshold]
return items
print filter1(L)
>>> [1, 2, 3, 4, 7, 8, 9, 10, 11]
print filter2(L)
>>> [1, 2, 3, 4, 7, 8, 9, 7, 1]
achten Sie in Zukunft auf die kleinen Bits. Was ich meine ist, dass in 'filter1' du' <'zeichen verwendest, in' filter2' du '<=' verwendest. Das Ergebnis ist auch anders, da diese zwei Filter unterschiedliche Logik verwenden, "index" gibt den Wert des ersten gefundenen Index zurück (dort, wo der Fehler liegt). –