我想做类似的事情:
>>> x = [1,2,3,4,5,6,7,8,9,0]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> y = [1,3,5,7,9]
>>> y
[1, 3, 5, 7, 9]
>>> y - x # (should return [2,4,6,8,0])
Run Code Online (Sandbox Code Playgroud)
但python列表不支持这种做法最好的方法是什么?
在Python中,如何减去两个非唯一的无序列表?假设我们有a = [0,1,2,1,0]和b = [0, 1, 1]我想这样做c = a - b,并有c成为[2, 0]或[0, 2]顺序并不重要,对我来说.如果a不包含b中的所有元素,则应抛出异常.
请注意,这与套装不同!我对找到a和b中元素集的区别不感兴趣,我对a和b中元素的实际集合之间的差异感兴趣.
我可以用for循环来做这个,在a中查找b的第一个元素,然后从a中删除元素,然后从a中删除等等.但这对我没有吸引力,它会非常低效(O(n^2)时间顺序)虽然及时做到这一点应该没问题O(n log n).