我在线搜索了近一个小时,但找不到任何东西。但我离题了,第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)
答案 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]
,但您可能遇到设计问题。