您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python中的内存错误

python中的内存错误

一个在这里

s = raw_input()
a=len(s)
for i in xrange(0, a):
    for j in xrange(0, a):
        if j >= i:
            if len(s[i:j+1]) > 0:
                sub_strings.append(s[i:j+1])

对于大型字符串,这似乎非常低效且昂贵。

做得更好

for i in xrange(0, a):
    for j in xrange(i, a): # ensures that j >= i, no test required
        part = buffer(s, i, j+1-i) # don't duplicate data
        if len(part) > 0:
            sub_Strings.append(part)

缓冲区对象保留对原始字符串以及开始和长度属性的引用。这样,不会发生不必要的数据重复。

长度的字符串l具有l*l/2平均长度的子串l/2,所以内存消耗将大致是l*l*l/4。使用缓冲区,它要小得多。

请注意,buffer()仅在2.x中存在。3.x具有memoryview(),其使用情况略有不同。

更好的方法是计算索引并按需剪切子字符串。

python 2022/1/1 18:42:48 有294人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶