Python TypeError:只能将列表(不是“int”)连接到列表

时间:2018-02-18 20:23:04

标签: python python-3.x

我正在尝试在计算我使用的每个项目的数量时实现无界背包。这是我的代码:

def best(x, items):
    sum = []
    n = len(items)
    opt = [[0 for i in range(0,x+1)] for j in range(0,n+1)]
    items.insert(0,(0,0,0))
    list = [0 for i in items]

    for i in range(1, n+1):
        weight, value, copies = items[i][0],items[i][1], items[i][2]
        for j in range(1,x+1):
            temp = []
            for k in range(0,x//weight+1):
                if k*weight <= j:
                    temp = temp + [[opt[i-1][j-k*weight]+k*value, i]]

            print(temp)
            opt[i][j] = max(temp, key= lambda x: x[0])


    print("OPT: ",opt)
    print("LIST: ",list)
    return opt[i][j]

我想将最佳值和项目数用于数组,但是出现了这个错误:

temp = temp + [[opt[i-1][j-k*weight]+k*value, i]]

TypeError: can only concatenate list (not "int") to list

我已经尝试了几种不同的方法,但仍然对此出了什么问题一无所知。

感谢您的帮助

很抱歉这个混乱, 所以用法示例是:x是背包的容量。 items是每个项目的列表,包含它的重量,值,副本。

所以预期的输入和输出将是:

print(best(3, [(1, 5, 2), (1, 5, 3)]))
>>>(15, [2, 1])

0 个答案:

没有答案