有没有相当于python的东西set
对于不可散列的对象? (例如可以相互比较但不能散列的自定义类?)
如果你的值不可散列,那么就有no point在使用set
.
只需使用一个list
反而。如果您的所有对象所能做的就是测试相等性,那么您必须扫描每个元素每次测试会员资格。obj in listvalue
就是这样做的,扫描列表直到找到相等匹配:
if not someobj in somelist:
somelist.append(someobj)
会给你一个“独特”值的列表。
是的,这会比集合慢,但是集合只能实现 O(1) 复杂度通过哈希值.
如果你的对象是可订购的,您可以通过使用来加快操作速度bisect module http://docs.python.org/2/library/bisect.html也许可以将测试复杂度降低到 O(log N) 。确保使用从二分测试收集的信息插入新值以保留顺序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)