2024-05-16 07:07:05 发布
网友
对于非散列对象,是否存在与pythonset等效的方法?(例如,可以相互比较但不能哈希的自定义类?)在
set
如果您的值不可散列,那么使用set就没有点。在
只需使用list。如果您的对象所能做的就是测试是否相等,那么您必须每次扫描每个元素来测试成员资格。obj in listvalue正是这样做的,扫描列表直到找到相等匹配:
list
obj in listvalue
if not someobj in somelist: somelist.append(someobj)
会给你一个“唯一”值的列表。在
是的,这将比集合慢,但是集合只能通过散列实现O(1)复杂度。在
如果您的对象是可排序的,那么您可以通过使用^{} module将测试降低到O(logn)复杂度来加快操作速度。确保使用从对分测试中收集到的信息插入新值以保持顺序。在
blist库中有一个sortedset class,它使用基于排序列表的存储机制,为可比较(而且可能是不可哈希的)对象提供了一个类似集合的api。在
如果您的值不可散列,那么使用
set
就没有点。在只需使用
list
。如果您的对象所能做的就是测试是否相等,那么您必须每次扫描每个元素来测试成员资格。obj in listvalue
正是这样做的,扫描列表直到找到相等匹配:会给你一个“唯一”值的列表。在
是的,这将比集合慢,但是集合只能通过散列实现O(1)复杂度。在
如果您的对象是可排序的,那么您可以通过使用^{} module 将测试降低到O(logn)复杂度来加快操作速度。确保使用从对分测试中收集到的信息插入新值以保持顺序。在
blist库中有一个sortedset class,它使用基于排序列表的存储机制,为可比较(而且可能是不可哈希的)对象提供了一个类似集合的api。在
相关问题 更多 >
编程相关推荐