string [i:length]给出内存错误

Dhi*_*kur 0 python python-2.7

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)

Ned*_*der 9

A MemoryError意味着你消耗了所有的RAM.您正在创建一个包含原始字符串的所有尾部的列表.如果原始字符串太长,则会占用大量内存.

一种可能性是使用生成器一次生成一个后缀,而不是创建所有这些后缀的列表:

def suffixes(stng):
    for i in xrange(len(stng)):
         yield stng[i:]
Run Code Online (Sandbox Code Playgroud)

如果调用者suffixes只是遍历结果,您甚至不必更改调用者.如果您确实需要明确的列表,那么您将需要一个不同的解决方案.

  • 一个人必须要快速胜过奈德. (3认同)