リスト内の要素を比較して、片方に入っていない要素だけを取り出したいです!

…という方に向けて、その方法をまとめました。

 

ということでこんにちは、20代怠け者(@20sInvest)です!

この記事では、2つのリスト・配列変数を比較して、片方にはあるのに片方にはない要素を取り出してリスト化する方法をまとめました。

例えば、こんな感じです。

ListA = [1,2,3,4,5,6,7,8,9]

ListB = [1,3,5,7,9]

#AにあってBにない要素は、[2,4,6,8]

こうした比較は、いわゆる「差集合」と呼ばれる比較方法です。

例えば、AとBの両方の条件に一致していないものを探す、といった目的などでこの方法が使えますね。

コピペでOKなスクリプトをまとめました。

早速いきましょう。

【ソース】一方のリストにあってもう片方のリストに無い要素だけを取り出す方法

ということで、ソースはこちらの通り。

ListA = [1,2,3,4,5,6,7,8,9]

ListB = [1,3,5,7,9]

listC = set(ListA) - set(ListB)
listC = list(listC)

 

上記を実行すると、このようなリストが生成されます。

[8, 2, 4, 6]

【解説】このスクリプトでやっていること

このスクリプトでは、差集合を使って「AにあってBにはないもの」を取り出しています。

set()を使い、List型を一旦Set型を変換します。

そして、Set型同士を演算子「-」(マイナス)することで、差集合を計算することができます。

その差集合の結果を、ListCに入れるという処理ですね。

listC = set(ListA) - set(ListB)

 

ListCという変数が返ってきますが、この状態ではSet型で返ってきます。

その後、別の処理で使う場合はList型にしておいた方がなにかと便利なので、list()を使って再度List型に戻しているのが2行目の処理です。

カンタンですね!

listC = list(listC)

まとめ

処理の流れがわかりやすいように、処理を2行にまとめましたが、以下のように1行にまとめてしまっても全然OKです。

listC = list(set(ListA) - set(ListB))

 

以上、一方のリストにあってもう片方のリストに無い要素だけを取り出す方法でした。

ぜひ、コピペで活用してみてください。

 

このように、コピペでそのまま使えるPythonスクリプトなど、Tipstourでは他にも色々な情報をシェアしています。

興味があれば、ぜひ他の記事もチェックしてみてください。

Python関連記事一覧