Python独習!

習得したPython知識をペイフォワード

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]
/* -----codeの行番号----- */