我开始使用Python并且目前正在学习列表推导,所以这可能听起来很奇怪。
问题:是否可以使用列表推导来创建t和s中的元素列表而不重复?有点像两组的联合但是使用列表而不是......?
我使用基本的python,因此我不允许使用任何快捷方式'保留'字样......
答案 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所示。