You are viewing a single comment's thread from:

RE: Python的差集運算 - 何者更快?

in #cn7 years ago

感谢分享

不过我的方式一,也不是在B中逐项查找
而是 if a[i] in b:
类似这样的判断,这个是否使用的是hash表?
以及我们遍历a的过程,在a-b做差集是否还是一样需要?(好像你说也需要)那就改成是否有优化?

其实我最喜欢的是简单粗暴的结果
比如随机生成俩超大集合
然后用1和2去计算,并打印出耗时,😄

Sort:  

在python上所有set的object都是用hash表來達成的。
關於a[i] in b,如果b是set,那就一步做完 ( O(1) );如果b是list,那就要逐個查看 ( O(n) )

Reference: https://wiki.python.org/moin/TimeComplexity

所以簡單來說,我猜你當初是打算用list的(?) ,那麼即使用上 'in',也等同於逐個查看,所以也是慢很多啦

我猜python的set difference就是這樣的:
for every element in a:
if a[i] is not in b then copy a[i] to c

粗暴的方法也好啊,但是我不太懂python,懶得學,所以就要交給你啦 XD

谢谢解答