我正在寻找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
答案 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()
是懒惰的。