列出我看不到的范围之外的索引



我确实理解该错误意味着什么,但是有人可以解释我在此特定代码上做错了什么?基本上,路径= [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]。因此它只有一个元素。

最新更新