[解決済み】Pythonで片方のリストにない要素を探す【重複】の巻
質問
2 つのリストを比較して、一方のリストにはあるが他方のリストにはない特定の要素の新しいリストを作成する必要があります。例えば
main_list=[]
list_1=["a", "b", "c", "d", "e"]
list_2=["a", "f", "c", "m"]
list_1 をループして、list_2 から list_1 にないすべての要素を main_list に追加したいです。
その結果は、次のようになるはずです。
main_list=["f", "m"]
pythonでやるにはどうしたらいいですか?
どのように解決するのですか?
TL;DR。
解決策 (1)
import numpy as np
main_list = np.setdiff1d(list_2,list_1)
# yields the elements in `list_2` that are NOT in `list_1`
解決策 (2) ソートされたリストが欲しい
def setdiff_sorted(array1,array2,assume_unique=False):
ans = np.setdiff1d(array1,array2,assume_unique).tolist()
if assume_unique:
return sorted(ans)
return ans
main_list = setdiff_sorted(list_2,list_1)
EXPLANATIONS:
(1)
NumPyの
setdiff1d
(
array1
,
array2
,
assume_unique
=
False
).
assume_unique
は、「配列が既に一意であるかどうか」を尋ねます。
もし
False
であれば、ユニークな要素が最初に決定されます。
もし
True
の場合、この関数は要素が既に一意であるとみなし、一意でない要素の判定をスキップします。
この結果、一意な値は
array1
その
は
で
array2
.
assume_unique
は
False
をデフォルトで使用します。
に拘るなら
ユニーク
要素 (ベースは
Chinny84のレスポンス
を使うだけです(ここで
assume_unique=False
=>がデフォルト値)。
import numpy as np
list_1 = ["a", "b", "c", "d", "e"]
list_2 = ["a", "f", "c", "m"]
main_list = np.setdiff1d(list_2,list_1)
# yields the elements in `list_2` that are NOT in `list_1`
(2)
回答をソートしてほしい人のために、カスタム関数を作りました。
import numpy as np
def setdiff_sorted(array1,array2,assume_unique=False):
ans = np.setdiff1d(array1,array2,assume_unique).tolist()
if assume_unique:
return sorted(ans)
return ans
答えを出すには、実行します。
main_list = setdiff_sorted(list_2,list_1)
副音声
(a) 解決策2(カスタム関数
setdiff_sorted
を返します。
リスト
(と比較して
配列
を解決策1)にしました。
(b) 要素が一意であるかどうか確信が持てない場合は、単にNumPyのデフォルト設定である
setdiff1d
複雑な例として何が考えられますか?注(c)を参照してください。
(c) 2つのリストのうち、どちらかが
ではない
一意である。
セイ
list_2
は一意ではありません。
list2 = ["a", "f", "c", "m", "m"]
. キープ
list1
をそのまま使用します。
list_1 = ["a", "b", "c", "d", "e"]
のデフォルト値を設定する
assume_unique
収穫
["f", "m"]
(両方のソリューションで)。しかし、もし
assume_unique=True
を実行すると、両方のソリューションで
["f", "m", "m"]
. なぜか?それは、ユーザーが要素が一意であると仮定しているからです)。従って、以下のようにするのがベターです。
assume_unique
をデフォルト値に設定します。どちらの答えもソートされていることに注意してください。
関連
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み] 2つのリストの差を取得する
-
[解決済み] リストの変更が不意にサブリスト全体に反映されたリスト
-
[解決済み] リストやデータフレームの要素にアクセスするためのブラケット[ ]とダブルブラケット[[ ]]の違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
Python百行で韓服サークルの画像クロールを実現する
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] not in "条件に基づきデータフレームから行を削除する [duplicate]...