第一个问题!所以我试图学习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
答案 0 :(得分:1)
quicksort[right]
您在此处使用括号而不是括号。支架用于索引和切片;括号用于函数调用。