时间和空间Python中列表到str转换的复杂性

时间:2017-08-13 06:21:40

标签: python list time-complexity big-o space-complexity

试图找出投射到字符串

的时间复杂度
str([1,2,6,...,3,6])

很确定它是O(1) 不知道如何验证。

编辑: 关于空间复杂性,这不应该与列表大小成线性关系, 考虑O(1)因为字符串有最大尺寸。

1 个答案:

答案 0 :(得分:9)

假设

列表的

str转换在复杂性上是不变的。

<强>实验

创建不同大小的列表:

In [67]: list10 = np.random.choice(100, 10).tolist()

In [68]: list100 = np.random.choice(100, 100).tolist()

In [69]: list10000 = np.random.choice(100, 10000).tolist()

In [70]: list1000000 = np.random.choice(100, 1000000).tolist()

<强>观察

使用timeit并在每个列表上计算转化过程的时间:

In [71]: %timeit str(list10)
1000000 loops, best of 3: 1.69 µs per loop

In [72]: %timeit str(list100)
100000 loops, best of 3: 10.6 µs per loop

In [73]: %timeit str(list10000)
1000 loops, best of 3: 958 µs per loop

In [74]: %timeit str(list1000000)
10 loops, best of 3: 96.8 ms per loop 

<强>结论

假设不正确。转换是及时的线性。