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']