python中的一组不可清除的对象

时间:2013-09-16 08:52:49

标签: python

对于不可清除的对象,是否存在等效的python set? (例如,可以相互比较但不进行哈希处理的自定义类?)

2 个答案:

答案 0 :(得分:6)

如果您的值不可播放,则使用set无意义

只需使用list即可。如果您的所有对象都可以测试是否相等,那么您必须每次扫描每个元素以测试成员资格。 obj in listvalue就是这样,扫描列表直到找到相等匹配:

if not someobj in somelist:
   somelist.append(someobj)

会为您提供“唯一”值列表。

是的,这将比一个集慢,但是集合只能通过哈希实现O(1)复杂度

如果您的对象是 orderrable ,则可以使用bisect module将测试降低到O(log N)复杂度,从而加快操作速度。确保使用从二分测试中收集的信息插入新值以保留订单。

答案 1 :(得分:0)

blist库中有sortedset class,它使用基于排序列表的存储机制,为可比较(且可能不可散列)的对象提供了类似集合的api。