'int'对象是不可取消的

时间:2011-06-11 23:09:59

标签: python

我在线搜索了近一个小时,但找不到任何东西。但我离题了,第6行继续回归TypeError: 'int' object is unsubscriptable。请帮我确定导致这种情况的原因。

def __reassigner__(allL, currentRow, currentSpace):
    changingRow=currentRow+1
    newl=[-1]*24
    while changingRow<8:
        distance = changingRow-currentRow
        newl[8:15]=allL[changingRow[0:7]]  #Line 6, this one
        if newl[currentSpace]==-1:
           newl[currentSpace]= currentRow
         if newl[currentSpace-distance]==-1:
           newl[currentSpace-distance]= currentRow
        if newl[currentSpace+distance]==-1:
           newl[currentSpace+distance]= currentRow
        allL[changingRow[0:7]]=newl[8:15]
        changingRow+=1
    return(allL)

5 个答案:

答案 0 :(得分:4)

变量changingRow是一个整数,但您尝试使用changingRow[0:7]对其进行切片。由于在int中不允许执行此操作,因此会出现错误。

我不知道你对这条线的意图是什么。也许allL是一个列表列表,您选择的是allL[changingRow][0:7]

答案 1 :(得分:0)

您的代码中的

changingRow似乎是一个整数(我假设在行changingRow=currentRow+1之后)。不幸的是,在第6行中,您尝试获取:changingRow[0:7],它不起作用,因为您尝试访问整数值,就好像它是一个数组一样。

答案 2 :(得分:0)

changingRow是一个整数值。 changingRow[0:7]将提取类似列表(“可订阅”)对象的前7个元素,但int没有像列表和字符串中那样的“元素”。

你想用changingRow[0:7]做什么?

答案 3 :(得分:0)

changingRow是一个整数,你不能从它获取0-7

答案 4 :(得分:0)

您无法访问write changingRow[0:7],因为changingRow是一个整数。如果您必须使用切片表示法(前8位数字或其他数字)访问它,您可以执行str(changingRow)[0:7],但您可能遇到设计问题。