У меня есть два списка, которые мне нужно объединить, где во втором списке игнорируются любые дубликаты первого списка... Немного сложно объяснить, поэтому позвольте мне показать пример того, как выглядит код, и что я хочу получить в результате.
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]
Вы заметите, что результат имеет первый список, включая два его значения «2», но тот факт, что у second_list также есть дополнительные значения 2 и 5, не добавляется к первому списку.
Обычно для чего-то подобного я бы использовал наборы, но набор в first_list удалит повторяющиеся значения, которые у него уже есть. Поэтому мне просто интересно, какой лучший/самый быстрый способ достичь этой желаемой комбинации.
Спасибо.
Решение проблемы
Вам нужно добавить к первому списку те элементы второго списка, которых нет в первом — наборы — это самый простой способ определить, какими элементами они являются, например:
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)))
Комментариев нет:
Отправить комментарий