Python:';列表';对象不可调用

Python:';列表';对象不可调用,python,sorting,encapsulation,Python,Sorting,Encapsulation,使用以下代码比较气泡排序和快速排序的时间: def makeArray(groesseArray, stellenZahlen): array = groesseArray * [None] for i in range(0,groesseArray): array[i] = randint(0,10**stellenZahlen) return array 制作数组 def bubble(arr): n = len(arr) for i

使用以下代码比较气泡排序和快速排序的时间:

def makeArray(groesseArray, stellenZahlen):
    array = groesseArray * [None]
    for i in range(0,groesseArray):
        array[i] = randint(0,10**stellenZahlen)
    return array
制作数组

def bubble(arr):
    n = len(arr)
    for i in range(n - 1):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                #print(arr)
气泡排序算法

def quick(arr):
   n = len(arr)
   high = []
   low = []
   if n <= 1:
       return arr
   else:
       pivot = arr.pop()
   for i in arr:
       if i > pivot:
           high.append(i)
       else:
           low.append(i)
   return quick(low) + [pivot] + quick(high)
def timer(func(arr)):
    start = time.time()
    func(arr)
    end = time.time()
    print(end - start)
计时器功能,用于测量算法的时间

testArray = makeArray(500, 5)

timer(quicksort.quick(testArray))
timer(bubblesort.bubble(testArray))
哪个是投掷

Traceback (most recent call last):
  File "C:\Users\user\PycharmProjects\Algo\compare.py", line 30, in <module>
    timer(quicksort.quick(testArray))
  File "C:\Users\user\PycharmProjects\Algo\compare.py", line 14, in timer
    func(arr)
TypeError: 'list' object is not callable             
回溯(最近一次呼叫最后一次):
文件“C:\Users\user\PycharmProjects\Algo\compare.py”,第30行,在
计时器(快速排序。快速(testArray))
文件“C:\Users\user\PycharmProjects\Algo\compare.py”,第14行,在计时器中
func(arr)
TypeError:“列表”对象不可调用
如何将带有列表的函数传递到计时器函数中?我试过*args,**kwargs希望这是解决方案,但被抛出了同样的错误


提前感谢

将计时器功能更改为

def timer(func, arr):
    start = time.time()
    func(arr)
    end = time.time()
    print(end - start)
并称之为:

timer(quicksort.quick, testArray)
timer(bubblesort.bubble, testArray)
在代码中,您可以在调用
计时器
时计算排序函数。结果是一个列表(从排序函数返回),然后将其传递给
计时器
。因此出现了错误:您试图将该列表用作
计时器中的函数


在上面的代码中,函数和数据作为两个独立的参数传递。函数是Python中的一级对象,可以像任何变量一样传递给其他函数。

您的代码在
def timer(func(arr))处抛出语法错误:
try
def timer(func,arr):
@leaf\u yakitori只解决了一半问题。