У меня есть два списка, которые мне нужно объединить, где во втором списке игнорируются дубликаты первого списка. .. Сложно объяснить, поэтому позвольте мне показать пример того, как выглядит код и чего я хочу в результате.
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 удалял бы повторяющиеся значения, которые у него уже есть. Так что мне просто интересно, какой лучший / самый быстрый способ достичь желаемой комбинации.
Спасибо.
second_list
?Ответы:
Вам нужно добавить в первый список те элементы второго списка, которых нет в первом - наборы - это самый простой способ определить, какими элементами они являются, например:
Или, если вы предпочитаете однострочники 8-)
источник
2
вашем результате только один , а их должно быть два.источник
set
. 👍Можно использовать наборы:
источник
Вы можете свести это к одной строке кода, если используете numpy:
источник
источник
источник
Самым простым для меня является:
источник
TypeError: unhashable type: 'dict'
)Вы также можете комбинировать ответы Ричи Хиндла и Неда Бэтчелдера для алгоритма среднего случая O (m + n) , который сохраняет порядок:
Обратите внимание, что
x in s
его сложность в наихудшем случае равна O (m) , поэтому сложность этого кода в наихудшем случае по-прежнему составляет O (m * n) .источник
Это может помочь
Функция union объединяет второй список с первым без дублирования элемента a, если он уже находится в. Аналогично оператору объединения множества. Эта функция не меняется b. Если a = [1,2,3] b = [2,3,4]. После объединения (a, b) получается a = [1,2,3,4] и b = [2,3,4]
источник
По рецепту :
источник
[1, 2, 2, 5, 7, 9]
источник