将列表转换为在Python中设置的运行时间

问题描述 投票:0回答:3

在Python中,如果将列表转换为集合,那么运行时间和空间复杂度是多少?

Example:
data = [1,2,3,4,5,5,5,5,6]

# this turns list to set and overwrites the list
data = set(data)

print data 
# output will be (1,2,3,4,5,6)
python list set runtime space
3个回答
2
投票

将列表转换为集合要求列表中的每个项目都被访问一次,O(n)。将元素插入集合是O(1),因此总体时间复杂度将为O(n)。

新集合所需的空间小于或等于列表的长度,因此也是O(n)。

这是Python数据结构的一个很好的reference


1
投票

您必须遍历整个列表,即O(n)时间,然后将每个列表插入一个集合,即O(1)时间。因此总体时间复杂度为O(n),其中n是列表的长度。

除了正在创建的集合或正在使用的列表之外,不需要其他空间。


0
投票

正如其他人已经说过的关于运行时,整个列表的集合创建时间是O(N),并且每个项目的集合存在检查是O(1)。

但他们对列表和集合之间内存使用情况相同的评论是不正确的。

在python中,集合可以使用比列表多3到10倍的内存。将内存使用量增长设置为O(N),但它总是至少比列表多3倍。也许是因为需要记住所有这些哈希值。

相关:https://stackoverflow.com/a/54891295/1163355

© www.soinside.com 2019 - 2024. All rights reserved.