def suffix(stng):
list = []
length = len(stng)
for i in range(length):
x = stng[i:length] ## This gives a Memory Error..See below
list.append(x)
return list
Run Code Online (Sandbox Code Playgroud)
这段代码是我在interviewstreet.com上解决问题的一部分,但是当我提交它时,我得到一个内存错误...我想知道如何纠正它?
这是追溯:
Original exception was:
Traceback (most recent call last):
File "/run-1342184337-542152202/solution.py", line 35, in
listofsuffix=suffix(var)
File "/run-1342184337-542152202/solution.py", line 13, in suffix
x=stng[i:length]
MemoryError
Run Code Online (Sandbox Code Playgroud)
A MemoryError意味着你消耗了所有的RAM.您正在创建一个包含原始字符串的所有尾部的列表.如果原始字符串太长,则会占用大量内存.
一种可能性是使用生成器一次生成一个后缀,而不是创建所有这些后缀的列表:
def suffixes(stng):
for i in xrange(len(stng)):
yield stng[i:]
Run Code Online (Sandbox Code Playgroud)
如果调用者suffixes只是遍历结果,您甚至不必更改调用者.如果您确实需要明确的列表,那么您将需要一个不同的解决方案.