2016-02-11 70 views
-1

我想創建一個python腳本來輸入一些列表(float或integer),並且該列表獲取我的進度,並且我用新值(來自進度)獲取一些新列表。python list and python error to execute

我的代碼:

for i in (mylist): 
     if i==1: 
       result=1 
     elif (i>1) and (i<2): 
       result=2 
     elif i==3: 
       result=3 
    ......................... 
    a.append(result) 
print(a) 

如果我執行該代碼我只取一個值,結果(我的事情,所以第一個值),我想在我的第一個列表

所有的值,如果我改變代碼:

for i in (mylist): 
    if mylist[i]==1: 
      result=1 
    elif (mylist[i]>1) and (mylist[i]<2): 
      result=2 
    elif mylist[i]==3: 
      result=3 
......................... 
a.append(result) 
print(a) 

然後告訴我錯誤: 類型錯誤:列表索引必須是整數或片,而不是浮

+0

什麼是mylist? – Jacobr365

+0

是我的第一個包含很多值的列表 – user27818

+0

詢問更多列表的類型,例如int/strings/bools列表。 – Jacobr365

回答

1

對於第一個代碼(與第二個代碼不同),必須將append放入for循環中,以便在每次迭代時將結果附加到列表a,而不僅僅是在循環結束時。

for i in mylist: 
    if i == 1: 
      result = 1 
    elif i > 1 and i < 2: 
      result = 2 
    elif i == 3: 
      result = 3 
    a.append(result) 

在Python中記住縮進非常重要。

+1

你是錯的地方追加thnx你 – user27818

+0

沒問題,歡迎來到StackOverflow。 – Christian

0

for in循環將I設置爲mylist的第一個值,然後是第二個值,依此類推。你正在試圖用mylist [i]的值進行索引,所以你基本上在做mylist [mylist [i]]。試試這個。

for i in (mylist): 
    if i==1: 
     result=1 
    elif (i>1) and (i<2): 
     result=2 
    elif i==3: 
     result=3 

    a.append(result) 
    print(a) 
0

這個錯誤很簡單,我想。因爲您允許浮點值填充您的mylist,所以當您遍歷它並將該值用作mylist的索引時,它將失敗,因爲如錯誤所述,您不能將float用作索引值。值轉換到使用INT(I)的整數

for i in (mylist): 
    i = int(i) 
    if mylist[i]==1: 
      result=1 
    elif (mylist[i]>1) and (mylist[i]<2): 
      result=2 
    elif mylist[i]==3: 
      result=3 

編輯:告訴你一個更好的方式使用該指數作爲變量i使用for i in range(len(mylist)):改爲迭代。我htink這是你實際上試圖做的,而不是檢索實際值