集合并集、列表推导
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 所示。
我刚开始使用 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 所示。