python中的list(set)操作是O(1)吗?

2024-10-03 23:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我们想从一个集合中构造一个列表,我们可以

[k for k in set]

这是O(n)操作,同时:

dict.keys()

是O(1) 根据https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt

因此,据我所知,dict使用set作为其底层数据结构的键,是list(set)O(1)吗?这是如何实现的?你知道吗

a = set(range(n))
s = list(a) # is this operation O(1)?

Tags: inhttps列表forwwwkeysdictlist
1条回答
网友
1楼 · 发布于 2024-10-03 23:23:57

Thus, as far as I know, dict is using set as its keys underlying data structure.

嗯,不是真的。与此相反的是一个更接近的类比:在实现中,set就像一个dict具有所有空值。dict在Python中是第一个出现的,set直到python2.2(2000年7月)才出现——参见PEP 218。你知道吗

同样值得一提的是,从python3开始,dict.keys()就是O(1)。在python2中,它是O(n),您应该使用dict.viewkeys()作为键“view”(set like interface)。你知道吗

is list(set) O(1)?

不,是O(n)-和列表一样。你知道吗

And how is this implemented?

设置支持the iterator protocol。你知道吗

相关问题 更多 >