整数对象不可下标,但它是一个列表

时间:2019-06-20 21:44:37

标签: python

我正在尝试为国际象棋应用程序编写一些代码。函数中的一行代码是:

if check_mate(board, True) == True:
    value = 999

将死函数是:

def check_mate(board, previous):
    if previous != True:
        prev = previous
    elif previous == True:
        if len(move_history_int) != 0:
            prev = move_history_int[-1]
        else:
            prev = [0,0,0,0]

move_history_int的长度为0,所以prev变为[0,0,0,0],但后来在check_mate中,它给了我错误

if prev[-1][0] == element - 1 and  prev[-1][1] == z and prev[-1][2] == element - 1 and prev[-1][3] == row:
TypeError: 'int' object is not subscriptable

执行print(prev)给出[0,0,0,0],尝试print(type(prev))给出列表。我想不出什么问题。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

if prev[-1][0] == element - 1 and  prev[-1][1] == z and prev[-1][2] == element - 1 and prev[-1][3] == row:
TypeError: 'int' object is not subscriptable

此错误告诉您上一个不能双下标。这是因为您使用的是一维列表,如我们在以下内容中看到的:

prev = [0,0,0,0]

由于它是一维列表,因此调用prev [-1] [0]会尝试在prev [-1]处调用列表的第一个列表项...但是prev [-1]本身并不是一个列出,就像您这样做一样:

>>> prev = [0,0,0,0]
>>> prev[-1]
0
>>> type(prev[-1])
>>> <type 'int'>

因此,要解决此问题,请找出您要从一维列表中提取的内容,或将列表重构为二维列表。