集合并集、列表推导

Set union, List Comprehensions

我刚开始使用 Python,目前正在学习列表理解,所以这听起来可能真的很奇怪。

问题:是否可以使用列表推导式来创建 t 和 s 中没有重复元素的列表?有点像两个集合的并集,但使用列表代替...?

我使用基本 python 所以我不允许使用任何快捷方式 'reserved' 单词...

事实上,您正在尝试两个集合的并集。使用 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 answer

是的,可以 "union" 两个列表:

>>> 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 所示。