列出对象中所有索引的最有时间/空间效率的方法

时间:2014-11-12 02:42:46

标签: python list time-complexity space-complexity

我正在寻找2种算法来创建字符串/列表/等中所有索引的列表。

我不熟悉范围如何运作。我的理解是使用范围在内存中创建了一个额外的列表,这就是我在这里要避免的。

  • 最节省时间的算法
  • 最节省空间的算法

我的最佳时间代码:

string = 'sentence'
indices = []
for i in range(len(string)):
    indices.append(i)

我的最佳空间代码:

string = 'sentence'
indices = []
string_len = len(string)
i = 0
while i < string_len:
    indices.append(i)
    i += 1

2 个答案:

答案 0 :(得分:3)

最佳时间空间:

string = 'sentence'
indices = range(len(string))        # Python 2
indices = list(range(len(string)))  # Python 3

答案 1 :(得分:2)

我认为这样做的时间,空间和代码效率最高的方法是:

string = "sentence"
indices = range(len(string))

此外,对于记录,如果您在第一个建议中将range()替换为xrange(),则它与第二个建议一样节省空间,因为xrange()是懒惰的。