列表对象不可调用调用其参数也是具有数组的函数的函数
list object not callable calling a function whose parameter is also a function with an array
你能帮忙解决以下问题吗?
Error: Traceback (most recent call last):
File "/Users/isabella/Desktop/GMIT/Algorithms/CTA_Project/main.py", line 186, in <module>
timeAlgo(insertionSort(arr))
File "/Users/isabella/Desktop/GMIT/Algorithms/CTA_Project/main.py", line 179, in timeAlgo
algo()
TypeError: 'list' object is not callable
# Implementation of Insertion Sort algorithm | Ref: [1]
def insertionSort(arr):
# Iterates over elements in the given arr starting at index 2
for i in range(1, len(arr)):
while arr[i - 1] > arr[i] and i > 0:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
i -= 1 # Moves down one index
return arr
# Times algorithm
def timeAlgo(algo):
# Starts timing
start = time.time()
# Executes algorithm
algo()
# Ends timing
end = time.time()
totalTime = end - start
return totalTime
arr = genRandomArr()
timeAlgo(insertionSort(arr))
你可以把测量执行时间的函数做成装饰器
from functools import wraps
import time
def timeAlgo(func):
@wraps(func)
def wrapper(*args):
start = time.time()
res = func(*args)
end = time.time()
print(f'{end - start} seconds')
return res
return wrapper
@timeAlgo
def insertionSort(arr):
# Iterates over elements in the given arr starting at index 2
for i in range(1, len(arr)):
while arr[i - 1] > arr[i] and i > 0:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
i -= 1 # Moves down one index
return arr
print(insertionSort([2,4,6,1,0]))
import time
def insertionSort(arr):
# Iterates over elements in the given arr starting at index 2
for i in range(1, len(arr)):
while arr[i - 1] > arr[i] and i > 0:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
i -= 1 # Moves down one index
return arr
def timeAlgo(algo, *args):
# Starts timing
start = time.time()
# Executes algorithm
algo(*args)
# Ends timing
end = time.time()
totalTime = end - start
return totalTime
arr = [2,4,6,1,0]
timeAlgo(insertionSort, arr)
适当推迟执行:
timeAlgo(lambda: insertionSort(arr))
你能帮忙解决以下问题吗?
Error: Traceback (most recent call last):
File "/Users/isabella/Desktop/GMIT/Algorithms/CTA_Project/main.py", line 186, in <module>
timeAlgo(insertionSort(arr))
File "/Users/isabella/Desktop/GMIT/Algorithms/CTA_Project/main.py", line 179, in timeAlgo
algo()
TypeError: 'list' object is not callable
# Implementation of Insertion Sort algorithm | Ref: [1]
def insertionSort(arr):
# Iterates over elements in the given arr starting at index 2
for i in range(1, len(arr)):
while arr[i - 1] > arr[i] and i > 0:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
i -= 1 # Moves down one index
return arr
# Times algorithm
def timeAlgo(algo):
# Starts timing
start = time.time()
# Executes algorithm
algo()
# Ends timing
end = time.time()
totalTime = end - start
return totalTime
arr = genRandomArr()
timeAlgo(insertionSort(arr))
你可以把测量执行时间的函数做成装饰器
from functools import wraps
import time
def timeAlgo(func):
@wraps(func)
def wrapper(*args):
start = time.time()
res = func(*args)
end = time.time()
print(f'{end - start} seconds')
return res
return wrapper
@timeAlgo
def insertionSort(arr):
# Iterates over elements in the given arr starting at index 2
for i in range(1, len(arr)):
while arr[i - 1] > arr[i] and i > 0:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
i -= 1 # Moves down one index
return arr
print(insertionSort([2,4,6,1,0]))
import time
def insertionSort(arr):
# Iterates over elements in the given arr starting at index 2
for i in range(1, len(arr)):
while arr[i - 1] > arr[i] and i > 0:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
i -= 1 # Moves down one index
return arr
def timeAlgo(algo, *args):
# Starts timing
start = time.time()
# Executes algorithm
algo(*args)
# Ends timing
end = time.time()
totalTime = end - start
return totalTime
arr = [2,4,6,1,0]
timeAlgo(insertionSort, arr)
适当推迟执行:
timeAlgo(lambda: insertionSort(arr))