繁体   English   中英

如何优化此代码以减少内存使用量?

[英]How to optimize this code to reduce memory usage?

我下面的代码使用about(30000输入元素)使用了超过300000 KB的内存,并且每个内存使用量都有限制(256 MB),那么有什么方法可以对其进行优化?

import itertools
def get_subsets(arr,m) :
    return list(itertools.combinations(arr,m))
def _9(string) :
    count =0
    for i in range(len(string)-1 , -1 ,-1) :
        if string[i] != '9' :
            break
        count += 1
    return count
if __name__ == "__main__" :
    length = int(input())
    arr = [int(x) for x in input().strip().split()]
    pairs = get_subsets(arr,2)
    max_9 = [_9(str(x[0]+x[1])) for x in pairs]
    max_9_0 = max(max_9)  
    print(max_9_0,max_9.count(max_9_0))

问题是:让我们将价格的质量定义为价格的结尾处的九个数字(最右边的数字等于9)。 例如,数字2999和123912391999都具有质量3,而数字952具有质量0。

有n个产品的价格分别为t1,t2,...,tn。

您将要购买两种产品(它们必须不同)。 请找到两个所选产品总价的最高质量。 另外,找到选择两种不同产品并获得总价格的最大可能质量的方法。

一种方法可能是不使用列表。 使用发电机。 它们也是可迭代的。 参见: http : //letstalkdata.com/2015/05/how-to-use-python-generators-to-save-memory/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM