Python独習!

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

Pythonで2つのリスト間の重複要素をとる方法

2つのリストで重複している要素を得る場合、for文とif文で処理していたが、setで簡単にできると知った。

入出力は以下のとおり。

入力:dataset1 = 'abcd' , dataset2 = 'cdefg'
出力:'c', 'd'

プログラムはCase1がfor + if 処理。Case2がsetを利用する場合。
行数は変わらないが、例えば、比較したいリストが3つになった場合、Case2だと & を付け足すだけでリストを追加できる利点がある。

def case1(dataset1, dataset2):
    comp = [letter for letter in dataset1 if letter in dataset2]
    return sorted(comp)

def case2(dataset1, dataset2):
    comp = list(set(dataset1) & set(dataset2))
    return sorted(comp)

if __name__ == "__main__":

    dataset1 = 'abcd'
    dataset2 = 'cdefg'

    print("case1_result ->", case1(dataset1, dataset2))
    print("case2_result ->", case2(dataset1, dataset2))


実行結果は以下のとおり。

case1_result -> ['c', 'd']
case2_result -> ['c', 'd']
/* -----codeの行番号----- */