怎么从10万的列表里删除5万个元素?

怎么从10万的列表里删除5万个元素?

需要从大量的数据里面删除一部分数据,如果数据量小没问题

>>> a=range(10)
>>> b=range(4)
>>> for x in b:
...     a.remove(x)
...
>>> a

[4, 5, 6, 7, 8, 9]

但是如果a和b都比较大,速度就特别慢,

>>> a=range(100000)
>>> b=range(50000)
>>> for x in b:
...     a.remove(x)
...

应该用其他的数据结构?用啥算法,速度会快点?
解决了,用set.difference
>>> a=set(range(1000000)
... )
>>> a=set(range(1000000))
>>> b=set(range(999999))
>>> print a.difference(b)
set([999999])
>>>
貌似你是要得到不同的元素的列表,好像用difference_update()
因为那你用difference,2个列表并没有改变,只不过显示了2个列表中不同的元素
如果a.difference_update(b) 那么a中就只有与b中不同的元素了
呵呵
哦~谢谢
我用的是a=a.difference(b).
可能你说的这个效率更高些,谢谢
这么客气干吗 互相帮助