Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查元组成员身份的时间复杂度是多少?_Python_Python 3.x_Tuples_Time Complexity_Membership - Fatal编程技术网

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)
但是,我在任何Python文档中都找不到tuple。 我尝试了以下代码来检查自己:

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)的原因是通过散列算法访问条目