对于我的挑战,有没有办法减少Python代码的内存



这是我的代码。挑战是取一串数字,得到它们的组合,并取每个组合的平均值。然后,对每一个它们计算大于或等于极限(k(的平均值。

我现在的问题是我的代码没有通过256MB的内存限制。

有什么技巧可以优化这个代码以使用更少的内存吗?

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提供的建议。