1. ホーム
  2. python

[解決済み] 2つのリストを結合して重複を除去し、元のリストの重複を除去しない。

2022-05-07 13:15:46

質問

2つのリストがあり、2番目のリストでは最初のリストとの重複を無視するように結合する必要があります。説明するのが少し難しいので、どのようなコードになるのか、そして結果として何が欲しいのかの例をお見せしましょう。

first_list = [1, 2, 2, 5]

second_list = [2, 5, 7, 9]

# The result of combining the two lists should result in this list:
resulting_list = [1, 2, 2, 5, 7, 9]

その結果、最初のリストがあることに気がつくでしょう。 を含む しかし、second_list にはさらに 2 と 5 の値があるという事実は、最初のリストには追加されません。

通常、このような場合はセットを使用しますが、first_listにセットを使用すると、すでに持っている重複した値をパージしてしまいます。そこで、この望ましい組み合わせを実現するための最良の/最速の方法は何なのか、単純に考えています。

ありがとうございます。

解決方法は?

2番目のリストの要素のうち、1番目のリストにないものを1番目のリストに追加する必要があります。どの要素かを判断する最も簡単な方法は、このようにセットです。

first_list = [1, 2, 2, 5]
second_list = [2, 5, 7, 9]

in_first = set(first_list)
in_second = set(second_list)

in_second_but_not_in_first = in_second - in_first

result = first_list + list(in_second_but_not_in_first)
print(result)  # Prints [1, 2, 2, 5, 9, 7]

または、一発芸が好きな方 8-)

print(first_list + list(set(second_list) - set(first_list)))