Python 检查元组成员身份的时间复杂度是多少?
在字典、列表和集合中检查成员身份(Python 检查元组成员身份的时间复杂度是多少?,python,python-3.x,tuples,time-complexity,membership,Python,Python 3.x,Tuples,Time Complexity,Membership,在字典、列表和集合中检查成员身份(x在数据结构中)的时间复杂性如下所示: dict-O(1) 列表-O(n) 集合-O(1) 但是,我在任何Python文档中都找不到tuple。 我尝试了以下代码来检查自己: import time l = list(range(10000000)) t = tuple(range(10000000)) s = set(range(10000000)) start = time.perf_counter() -1 in s elapsed = t
x在数据结构中
)的时间复杂性如下所示:
- dict-O(1)
- 列表-O(n)
- 集合-O(1)
import time
l = list(range(10000000))
t = tuple(range(10000000))
s = set(range(10000000))
start = time.perf_counter()
-1 in s
elapsed = time.perf_counter()
e = elapsed - start
print("Time spent in set is: ", e)
start = time.perf_counter()
-1 in l
elapsed = time.perf_counter()
e = elapsed - start
print("Time spent in list is: ", e)
start = time.perf_counter()
-1 in t
elapsed = time.perf_counter()
e = elapsed - start
print("Time spent in tuple is: ", e)
我得到这样的东西:
Time spent in set is: 2.0000000000575113e-06
Time spent in list is: 0.07841469999999995
Time spent in tuple is: 0.07896940000000008
这告诉我它也是O(n)。
有人能证实这一点吗?是否有官方文档证实了这一点?将元组视为“冻结列表”。一个元组,就像一个列表,必须逐项搜索,以确定对象是否是该元组的成员 成员资格测试的复杂性与列表的复杂性相同:O(n) dict和set是O(1)的原因是通过散列算法访问条目