2014-05-18 20 views
0

第一個問題!所以我試圖學習Python(來自Java使用的兩個學期),並且我遇到了TypeError,我認爲這是因爲應該有一個列表時有一個函數。這裏是我的代碼,工作Python TypeError爲什麼一個列表被視爲一個函數(QuickSort示例)

t = [3,5,2,4,1] 

def quicksort(lst): 
    if len(lst) == 0: 
     return [] 
    pivot = [lst[0]] 
    left = [x for x in lst if x < pivot[0]] 
    right = [x for x in lst if x > pivot[0]] 
    ans = quicksort(left) + pivot + quicksort(right) 
    return ans 
    #return quicksort(left) + pivot + quicksort[right] 

print quicksort(t) 

這工作。但是,當我做:

t = [3,5,2,4,1] 

def quicksort(lst): 
    if len(lst) == 0: 
     return [] 
    pivot = [lst[0]] 
    left = [x for x in lst if x < pivot[0]] 
    right = [x for x in lst if x > pivot[0]] 
    #ans = quicksort(left) + pivot + quicksort(right) 
    #return ans 
    return quicksort(left) + pivot + quicksort[right] 

print quicksort(t) 

我得到這個:

Traceback (most recent call last): 
    File "quickSortTest.py", line 13, in <module> 
    print quicksort(t) 
    File "quickSortTest.py", line 11, in quicksort 
    return quicksort(left) + pivot + quicksort[right] 
    File "quickSortTest.py", line 11, in quicksort 
    return quicksort(left) + pivot + quicksort[right] 
    File "quickSortTest.py", line 11, in quicksort 
    return quicksort(left) + pivot + quicksort[right] 
TypeError: 'function' object is unsubscriptable 

我想理解上的差異,並非常感激的解釋!

-S

回答

1
quicksort[right] 

您使用括號,而不是括號這裏。括號用於索引和切片;括號用於函數調用。

+0

哦!哇謝謝。 – Squirrel

相關問題