Установить союз, список понятий

Я начинаю работать с Python и в настоящее время изучаю понимание списков, так что это может показаться очень странным.

Вопрос: Можно ли использовать понимание списка для создания списка элементов в t и s без дубликатов? Что-то вроде объединения двух наборов, но вместо этого используются списки...?

Я использую базовый Python, поэтому мне не разрешено использовать какие-либо ярлыки «зарезервированные» слова...


person tom    schedule 06.02.2015    source источник


Ответы (2)


На самом деле вы пытаетесь сделать объединение двух наборов. Для этого используйте тип данных set/frozenset. , а не понимание списка:

>>> t = ['a', 'b', 'c']
>>> s = ['b', 'd', 'e']
>>> u = set(t)
>>> v = set(s)
>>> u
set(['a', 'c', 'b'])
>>> v
set(['b', 'e', 'd'])
>>> u | v
set(['a', 'c', 'b', 'e', 'd'])
>>> u.union(v)
set(['a', 'c', 'b', 'e', 'd'])
>>> u.union(s)                
set(['a', 'c', 'b', 'e', 'd'])

См. этот ответ SO Чтобы получить больше информации.

person Jérôme Radix    schedule 11.02.2015

Да, можно "объединить" два списка:

>>> s = [1,2,3,4]
>>> t = [3,5,4,7]
>>> 
>>> s + [x for x in t if x not in s]
[1, 2, 3, 4, 5, 7]

Однако это плохой Python, потому что часть понимания будет сканировать весь список s для каждого элемента в t. В реальном коде вы должны использовать наборы, как показал @Jérôme.

person georg    schedule 11.02.2015