2013-10-29 77 views
0

您好,我正在嘗試重新排列2d列表,以便在不使用內置函數的情況下處理名稱重複。但是當我去打印我得到這個錯誤不能在不支持的操作數類型中找到錯誤 - :'list'和'int'

TypeError: unsupported operand type(s) for -: 'list' and 'int' 

問題的代碼是

if c[i][0]==c[i+1][0] and c[c-1][0]!= c[i][0] : 

和代碼IM希望運行我的計劃,我不能檢查,因爲這個錯誤是

d = [] 
d.append(c[0][0]) 
d.append(c[0][1]) 
i = 1 
while size - 1 : 
    # for more multiple repeats,append only classes 
    if c[i][0]==c[i+1][0] and c[i-1][0]==c[i][0] : 
     d.append(c[i][1]) 
     d.append(c[i+1][1]) 
    # for single repeats, append name, and classes 
    if c[i][0]==c[i+1][0] and c[c-1][0]!= c[i][0] : 
     d.append(c[i][0]) 
     d.append(c[i][1]) 
     d.append(c[i+1][1]) 
    # no previous repeats, append name and class 
    else : 
     d.append(c[i][0]) 
     d.append(c[i][1]) 
    i = i + 1 
print d 

im不知道爲什麼它會導致錯誤,因爲前面的if語句沒有引起任何問題。也許它與!=聲明有關?如果你想運行代碼清單被處理爲

[['Adam', 'PHYS 1443'], ['Ashley', 'IE 3312'], ['Ashley', 'PHYS 1443'], ['August', 'PHYS 1444'], ['Baron', 'PHYS 1443'], ['Christopher', 'IE 3301'], ['Christopher', 'CSE 1320'], ['Christopher', 'PHYS 1443'], ['Dylan', 'CSE 1310'], ['Henry', 'PHYS 1444'], ['James', 'IE 3301'], ['James', 'PHYS 1443'], ['Jonathan', 'IE 3312'], ['Krishna', 'CSE 1310'], ['Luis', 'CSE 1310'], ['Michael', 'IE 3301'], ['Nang', 'PHYS 1443'], ['Pramod', 'PHYS 1444'], ['Pramod', 'PHYS 1443'], ['Saroj', 'IE 3301'], ['Saroj', 'MATH 1426'], ['Sol', 'CSE 1310'], ['Timothy', 'MATH 2325'], ['Timothy', 'IE 3301']] 

回答

4

clist您正在訪問所以我猜它不能同時是一個int

也許你的意思是:

if c[i][0]==c[i+1][0] and c[i-1][0]!= c[i][0] : 
+0

感謝,我沒有,甚至看到。但現在我的列表超出範圍。織補 –

+0

好吧,我看到其他錯誤。 nvm和感謝 –

+0

你可以爲它添加一個簡單的檢查,如果索引超出了任何一端的範圍,你想停止它。 –

2

第一個錯誤是在線路

if c[i][0]==c[i+1][0] and c[c-1][0]!= c[i][0] : 

c列表作爲indesx我認爲有其他錯誤。看不到size在哪裏下降。

while size - 1 : 
    .... 

也許你的意思

while size - i: 
    ... 
相關問題