python - 有没有办法为我的挑战减少这个 Python 代码的内存?
问题描述
这是我的代码。挑战是取一串数字并得到它们的组合,然后取每个组合的平均值。然后对于每个它们,计算大于或等于限制 (k) 的平均值。
我现在的问题是我的代码没有超过 256 MB 的内存限制。
是否有任何提示可以优化此代码以使用更少的内存?
from itertools import combinations
k = input().split(" ")[1]
nums_arr = list(map(int, input().split()))
def combs(x):
return [c for i in range(len(x)+1) for c in combinations(x,i)][1:]
def avg(x):
return map(lambda x: sum(x)/len(x), combs(nums_arr))
def condition(arr):
return sum(map(lambda x : x >= int(k), avg(nums_arr)))
print(condition(nums_arr))
解决方案
函数combs
应重写为以下等效的生成器函数:
def combs(arr):
first_time = True
for i in range(len(arr)+1):
for c in combinations(arr, i):
if first_time:
first_time = False
continue
yield c
您还应该采纳@quamrana 提供的建议。
推荐阅读
- java - Apache-POI/ Java/ leaving out rows when writing to an Excel file
- java - Experiencing Code Coverage issue only when using Stream
- python - Can't print class fucntion return with .format()
- topology - continuous onto function from (0,1)x(0,1) to [0,1]x[0,1]
- visual-studio - Copy dependency assemblies into nuget package
- java - How to open a document on an alert dialog using PDFView on the app without using Intents
- javascript - Why am I not getting a status code of 200?
- python - Is there a way to get a Zestimate of "This home" for January of every year from 2015-2020 using Selenium of Beautiful Soup?
- javascript - 使用 scaleTime 偏移 x 轴刻度
- ansible - Ansible when condition from debug msg