Python TypeError为什么列表被视为函数(QuickSort示例)

时间:2014-05-18 03:17:11

标签: python

第一个问题!所以我试图学习Python(来自两个学期的Java使用)并且我遇到了一个TypeError,我认为这是因为当应该有一个列表时有一个函数。这是工作的代码

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 个答案:

答案 0 :(得分:1)

quicksort[right]

您在此处使用括号而不是括号。支架用于索引和切片;括号用于函数调用。