【发布时间】:2021-10-25 19:44:21
【问题描述】:
如果我们有一个列表 lst = [1,2,3,4] 并且我们将它转换为像这样的元组 tup = tuple(lst),那么这段代码的时间复杂度是多少?
【问题讨论】:
-
是什么阻碍了您自己尝试? docs.python.org/3/library/timeit.html.
标签: python python-3.x data-structures
如果我们有一个列表 lst = [1,2,3,4] 并且我们将它转换为像这样的元组 tup = tuple(lst),那么这段代码的时间复杂度是多少?
【问题讨论】:
标签: python python-3.x data-structures
这是一个 O(N) 操作,tuple(list) 只是将对象从列表复制到元组。 因此,您仍然可以修改内部对象(如果它们是可变的),但您不能向元组添加新项目
【讨论】:
时间复杂度为 O(n),因为底层操作只是获取原始数字并将对象复制到元组而不是列表中。
Python 列表时间复杂度:https://wiki.python.org/moin/TimeComplexity
| Operation | Average Case | Amortized Worst Case |
|---|---|---|
| Copy | O(n) | O(n) |
【讨论】:
l = [{'a':0}]; t = tuple(l); l[0]['a'] = 1; print(t[0]) 将打印 {'a':1}