ywb*_*aek 4 python membership tuples time-complexity python-3.x
x in data_structure在字典、列表和集合中检查成员资格 ( ) 的时间复杂度在此处列出:http :
//wiki.python.org/moin/TimeComplexity
但是,我在任何 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)
Run Code Online (Sandbox Code Playgroud)
我得到这样的东西:
Time spent in set is: 2.0000000000575113e-06
Time spent in list is: 0.07841469999999995
Time spent in tuple is: 0.07896940000000008
Run Code Online (Sandbox Code Playgroud)
这告诉我它也是 O(n)。任何人都可以证实这一点吗?是否有官方文件证实这一点?
考虑一个元组只是一个“冻结列表”。一个元组,就像一个列表,必须通过一个条目一个条目地进行搜索,以便找到一个对象是否是那个元组的成员。
成员资格测试的复杂度与列表的复杂度相同:O(n)。
dicts 和 set 是 O(1) 的原因是条目是通过散列算法访问的。
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |