【发布时间】:2012-03-27 18:39:04
【问题描述】:
我有两个列表 例如:
A = [1,3,5,7]
B = [1,2,3,4,5,6,7,8]
现在,A 始终是 B 的子集 我想生成第三个列表 C: 它具有 B 中存在但 A 中不存在的元素 喜欢
C = [2,4..]
谢谢
【问题讨论】:
标签: python
我有两个列表 例如:
A = [1,3,5,7]
B = [1,2,3,4,5,6,7,8]
现在,A 始终是 B 的子集 我想生成第三个列表 C: 它具有 B 中存在但 A 中不存在的元素 喜欢
C = [2,4..]
谢谢
【问题讨论】:
标签: python
List comprehensions 是一种方法:
[x for x in B if x not in A]
如果您使用 Python,我建议您熟悉列表推导式。它们是一个非常强大的工具。
(有几个人建议使用set。虽然如果您只关心元素是否在集合中,这是一个非常好的主意,但请注意,它不会保留元素的顺序;列表推导会的。)
【讨论】:
>>> set(B) - set(A)
set([8, 2, 4, 6])
或
>>> sorted(set(B) - set(A))
[2, 4, 6, 8]
【讨论】:
一个简单的方法是
C = [x for x in B if x not in A]
这对于大型列表会变得很慢,因此最好使用set 代替A:
A = set(A)
C = [x for x in B if x not in A]
如果您有多个这样的操作,则始终使用集合可能是最佳选择。如果 A 和 B 是集合,你可以简单地做
C = B - A
【讨论】:
C = sorted(list(set(B) - set(A)))
应该可以的。
【讨论】:
list。 sorted 总是产生一个列表。