获取TypeError:list indices必须是整数,而不是元组

时间:2014-05-23 15:37:27

标签: python algorithm

我试图实施该算法,但一直收到错误,我不确定原因:

size = len(data)
total = sum(data)

barray = [[False for x in range(int(size+1))] for x in range(int((total/2)+1))]

for x in range(0,size):
    barray[0][x] = True

for x in range(1,int(total/2)):
    barray[x][0] = True

for i in range(1,int(total/2)):
    for j in range(1,size):
        barray[i,j] = (barray[i, j - 1] or barray[i - data[j - 1], j - 1]) if data[j-1] <= i else barray[i, j - 1]

return barray[int(total/2),size]

错误:

Traceback (most recent call last):
File "C:/Users/tuf21741/PycharmProjects/PyBackup/test.py", line 25, in <module>
assert checkio([10, 10]) == 0, "1st example"
File "C:/Users/tuf21741/PycharmProjects/PyBackup/test.py", line 17, in checkio
barray[i,j] = (barray[i, j - 1] or barray[i - data[j - 1], j - 1]) if data[j-1] <= i else barray[i, j - 1]
TypeError: list indices must be integers, not tuple

1 个答案:

答案 0 :(得分:2)

barray[i,j] = (barray[i, j - 1] or barray[i - data[j - 1], j - 1]) if data[j-1] <= i else barray[i, j - 1]

在这里看起来应该为索引使用单独的方括号。

barray[i][j] = (barray[i][j - 1] or barray[i - data[j - 1]][j - 1]) if data[j-1] <= i else barray[i][j - 1]

还有返回声明。

return barray[int(total/2)][size]
相关问题