2017-04-12 132 views
1

我想檢查列表中的每個元素是否有差異1.我試圖從上一個列表中減去列表中的元素,但它會輸出一個IndexError。如何編輯代碼來刪除它?如何避免索引錯誤?

import sys 
q = int(input().strip()) 
for i in range(q): 
    n = int(input().strip()) 
    a = list(map(int, input().strip().split(' '))) 
    for i in range(len(a)): 
     a.sort() 
    if a[i+1]-a[i] == 1: 
     print('Yes') 
    else: 
     print('No') 
+0

當'i'是數組中的最後一個索引時,不能從'a [i + 1]'讀取 - 不存在。 – Amber

回答

1

[i+1]將不在列表中最後一個元素的工作,因爲你會被超越的名單範圍。請記住,列表的長度不是列表中的最後一個索引,因爲列表索引從0開始。

我認爲您正在過度複雜化您的問題。嘗試使用enumerate()函數,但不是從第一個元素開始,而是從第二個元素開始。使用枚舉(),索引實際上是之前的元素。

q = [3, 5, 7, 8, 4, 5] 
for i, j in enumerate(q[1:]): 
    if j - q[i] == 1: 
     print("Yes") 
+0

謝謝,我從來不知道枚舉函數。 –

+1

@ZarifCeaser不用擔心,隨時接受答案,並upvote :) – TerryA