设置联合,列表理解

时间:2015-02-06 00:26:53

标签: python list set list-comprehension

我开始使用Python并且目前正在学习列表推导,所以这可能听起来很奇怪。

问题:是否可以使用列表推导来创建t和s中的元素列表而不重复?有点像两组的联合但是使用列表而不是......?

我使用基本的python,因此我不允许使用任何快捷方式'保留'字样......

2 个答案:

答案 0 :(得分: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 answer

答案 1 :(得分:1)

是的,可以“联合”两个列表:

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