从python列表中排除公共元素
可能重复:从python列表中排除公共元素,python,Python,可能重复: 我有两张单子 例如: A = [1,3,5,7] B = [1,2,3,4,5,6,7,8] 现在,A总是B的子集 我想生成第三个列表C: 其中的元素在B中存在,但在A中不存在 像 谢谢,有一种方法可以做到这一点: [x for x in B if x not in A] 如果您使用Python,我建议您熟悉列表理解。它们是一个非常强大的工具 (有几个人建议使用set。如果只关心元素是否在集合中,这是一个非常好的主意,请注意,它不会保留元素的顺序;列表理解会保持顺序。)一个简单
我有两张单子 例如:
A = [1,3,5,7]
B = [1,2,3,4,5,6,7,8]
现在,A总是B的子集
我想生成第三个列表C:
其中的元素在B中存在,但在A中不存在
像
谢谢,有一种方法可以做到这一点:
[x for x in B if x not in A]
如果您使用Python,我建议您熟悉列表理解。它们是一个非常强大的工具
(有几个人建议使用
set
。如果只关心元素是否在集合中,这是一个非常好的主意,请注意,它不会保留元素的顺序;列表理解会保持顺序。)一个简单的方法是
C = [x for x in B if x not in A]
对于大型列表,这将变得很慢,因此最好使用集合作为a
:
A = set(A)
C = [x for x in B if x not in A]
如果您有多个这样的操作,那么始终使用集合可能是最好的选择。如果设置了A
和B
,您只需执行以下操作即可
C = B - A
或
应该可以了。不需要列表<代码>排序
始终生成一个列表。
C = B - A
>>> set(B) - set(A)
set([8, 2, 4, 6])
>>> sorted(set(B) - set(A))
[2, 4, 6, 8]
C = sorted(list(set(B) - set(A)))