(私は思った)同じことをするべきだが実際はしないという2つの方法があります。リストの理解の指標をPythonのリストで取得する
リストの理解では、取り込まれたインデックスが最初に対応すると思われるので、異なるインデックスに同じ値がある場合、あいまいさがあります。
リストの理解度をfilter2
に変更する方法はありますか?filter1
と同じ結果が得られますか?
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]
今後は小さなビットに注意してください。つまり、 'filter1'では' <'を使い、' filter2'では '<='を使います。これらの2つのフィルタが異なるロジックを使用しているため、結果も異なります。「index」は見つかった最初のインデックスの値を返します(つまり、欠陥がある場所)。 –