Pythonで重複しない要素をリストから削除する
測定値から異常値や低頻度の値を除去する際に使える(かも)。
例えば、以下のようにリスト内で重複していない要素(100と1)を削除したいケース。
入力:[100, 2, 2, 3, 3, 3, 2, 1, 2, 4, 4, 3] 出力:[2, 2, 3, 3, 3, 2, 2, 4, 4, 3]
プログラムはこんな感じで書ける。3種類。
def case1(dataset): temp = dataset.copy() for i in dataset: if not dataset.count(i)>1: temp.remove(i) return temp def case2(dataset): temp = [] for i in dataset: if dataset.count(i)>1: temp.append(i) return temp def case3(dataset): #case2の内包表記# return [i for i in dataset if dataset.count(i)>1] if __name__ == "__main__": dataset = [100, 2, 2, 3, 3, 3, 2, 1, 2, 4, 4, 3] print("case1_result ->", case1(dataset)) print("case2_result ->", case2(dataset)) print("case3_result ->", case3(dataset))
実行結果はどれも同じ。
case1_result -> [2, 2, 3, 3, 3, 2, 2, 4, 4, 3] case2_result -> [2, 2, 3, 3, 3, 2, 2, 4, 4, 3] case3_result -> [2, 2, 3, 3, 3, 2, 2, 4, 4, 3]