为什么下面的python代码会抛出内存错误?

这是代码:


import itertools


num_cases = int(input())


answer_list = []


while num_cases>0:

    live_ans = []

    question_list = []

    nums = int(input())

    d1 = int(input())

    d2 = int(input())

    sample_space= {d1, d2}

    temp = []


    no_cases = 2**(nums-1)


    combs = itertools.product(sample_space, repeat = nums-1)


    for i in combs:

        temp.append(i)


    for i in temp:

        if sum(i) not in live_ans:

            live_ans.append(sum(i))

        else:

            pass

    live_ans.sort()

    answer_list.append(live_ans)

    num_cases -= 1


for i in answer_list:

    finalans = " ".join(map(str, i))

    print(finalans)

对于小输入,如:


1

3

1

2

该程序运行良好。至于相对较大的输入,如:


1

58

69

24

它给出了一个内存错误。我没有为此引用任何原因,因为代码看起来根本不消耗内存。不是吗?


MM们
浏览 197回答 2
2回答

收到一只叮咚

看看你的以下几行:no_cases = 2**(nums-1)combs = itertools.product(sample_space, repeat = nums-1)for i in combs:    temp.append(i)2**58 = 2.8823038e+17你计算一下为什么从这里得到内存错误
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python