gpt4 book ai didi

python - 什么类型的可变对象集合可以让我快速删除 python 中的项目?

转载 作者:太空狗 更新时间:2023-10-30 02:14:06 25 4
gpt4 key购买 nike

假设我已经分析了我的程序,并且绝大多数运行时间都花在了“删除”“列表”对象的方法上。程序操作一个集合集合,集合集合不需要排序。在 python 中实现这些集合的最直接方法是什么(最好使用标准 python 集合),以便 collection.remove(item)collection 是外部时都不昂贵collection 和 item 是一个内部集合,当 collection 是一个内部集合而 item 只是一个不可变对象(immutable对象)。

这里使用集合的问题是集合不能包含可变集合,因此内部集合必须是卡住集合,但是删除项目不再那么便宜。

到目前为止,我遇到的最佳解决方案是由某人建议的,作为此处的答案,显然很快就被删除了。他们建议使用字典。这可行,但您必须为每个项目生成任意 id,所以有点尴尬。另一种选择是使用链表,但这也很尴尬,因为链表不是标准库的一部分。

最佳答案

如果您可以忍受定义为身份的平等,您可以创建一个可哈希列表子类型并将它们用作集合成员以进行快速访问/删除:

class hlist(list):
"Hashable list"
def __hash__(self):
return id(self)
def __eq__(self, other):
return self is other
def __ne__{self, other}:
return self is not other

in1 = hlist([1,2,3])
in2 = hlist([4,5,6])
outer = set([in1, in2])

关于python - 什么类型的可变对象集合可以让我快速删除 python 中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com