我明白這個錯誤意味着什麼,但有人可以解釋我在做這個特定的代碼有什麼問題嗎?基本上,路徑= [A,B,C,D],我只是創建[4] [4](最終)二維數組,它交換了相鄰的索引。交換從最後一個元素和之前的元素開始,隨着循環的進行到達列表的開始處。所以最後我應該得到[[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
錯誤:列表索引超出範圍
,'-s-1'是-4。 'y [-4]'是超出界限的。 – Maroun
當len(y)== 1時'y [-s-1]'求值爲'y [-2]',這已經是第一次迭代了,所以索引超出範圍。 –
't'永遠不會被使用,'s'總是1但是有一個'if s <4','y'被創建爲空,然後添加1個元素,然後當它試圖交換2個元素時只有1 ...我建議完全重寫這個,「不必要的複雜」幾乎甚至開始形容它。 –