我确实理解该错误意味着什么,但是有人可以解释我在此特定代码上做错了什么?基本上,路径= [a,b,c,d],我只是创建[4] [4](final)二维数组,它交换了相邻的索引。交换始于最后一个元素和元素,然后随着循环的进行而转到列表的开始。因此,最后我应该得到[[a,b,d,c] [a,c,b,d],[b,a,c,d],[d,b,c,a]]
t = -1
s = 1
y = []
final = []
path = self.path #path = [A,B,C,D]
for x in path:
y.append(path)
if s < 4: #Just ensuring to not get out of range
y[-s],y[-s-1] = y[-s-1],y[-s]
else:
y[-1],y[0] = y[0],y[-1]
final.append(y)
y = [] # So I won't create multi-dimensional list
错误:列表索引不超出范围
以下是可读且可读的代码:
path= ['A','B','C','D']
final= []
for index in range(len(path)):
row= path[:] # copy the original list
row[index-1],row[index]= row[index],row[index-1] # swap 2 elements
final.insert(0, row) # insert at the start so the order is as expected
print(final)
,因为这里的 y
变成 [[A, B, C, D]]
而不是 [A, B, C, D]
。因此它只有一个元素。