2011-10-12 72 views
27

我在python中編寫了一個簡單的排序程序,並遇到此錯誤。我想交換列表元素,但它返回一個錯誤。我附上下面的問題的錯誤和程序。Python:TypeError:'元組'對象不支持項目分配

list[i+1] = list[i] 

TypeError: 'tuple' object does not support item assignment 
def my_sort(list): 
    for index in range(1,len(list)): 
     value=list[index] 
     i=index-1 
     while i>=0: 
      if value<list[i]: 
       list[i+1] = list[i] 
       list[i]=value 
       i=i-1 
      else: 
       break 
    return 

    input_list=eval(input("Enter list items")) 
    my_sort(input_list) 
    print(input_list) 
+1

請勿使用單詞列表。你能把代碼正確地縮進嗎? – lc2817

+12

請不要*調用變量「列表」。 「列表」是內建類型。現在你不能將它從一個元組轉換爲一個具有'list(thing)'的列表。 –

+0

*爲什麼在世界上*你會使用eval?更簡單的解決方案是用','分割,然後去掉多餘的空格。 – Dev

回答

43

評價 「1,2,3」 的結果在(1, 2, 3),一個tuple。正如你發現的,元組是不可變的。處理前轉換爲列表。

+0

我是python的新手。你能幫我如何將元組轉換爲列表?或者更好,如何讓用戶直接輸入一個列表? –

+8

要直接輸入列表,請用方括號括起序列:「[1,2,3]」。要轉換爲列表,將它傳遞給列表構造函數:'L = list(S)'。 –

+0

@JohnConnor:你可能想閱讀http://docs.python.org/tutorial/ –

相關問題