【发布时间】:2020-03-06 17:15:45
【问题描述】:
在字典、列表和集合中检查成员资格 (x in data_structure) 的时间复杂度如下:
http://wiki.python.org/moin/TimeComplexity
- dict - O(1)
- 列表 - O(n)
- 设置 - O(1)
但是,我在任何 Python 文档中都找不到元组。 我尝试了以下代码来检查自己:
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)。 谁能证实这一点?是否有官方文件证实这一点?
【问题讨论】:
标签: python python-3.x tuples time-complexity membership