例如,我有两个列表
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = [6, 9, 12]; # the subset of A
the result should be [7, 8, 10, 11]; the remaining elements
python中是否有内置函数可以做到这一点?
Answers:
如果顺序不重要,则应使用set.difference
。但是,如果要保留顺序,只需要简单的列表理解即可。
result = [a for a in A if a not in subset_of_A]
编辑:正如delnan所说,如果subset_of_A
是实际值,性能将大大提高set
,因为检查a中的成员资格set
是O(1)而不是列表中的O(n)。
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set([6, 9, 12]) # the subset of A
result = [a for a in A if a not in subset_of_A]
是的,filter
功能:
filter(lambda x: x not in subset_of_A, A)
filter
返回列表本身,而在Python 3中,它返回迭代器。
list(filter(...))
subset_of_A
一个real进行极大的改进set
,它可以进行O(1)
成员资格测试(而不是O(n)
列表)。