我正在嘗試編寫一個名爲「k_largest(input,output)」的函數,它接受兩個Python數組列表,然後用輸入的最大數字填充輸出列表按升序排列,具體取決於輸出列表的大小。Python:輸出列表= x輸入列表的最大數量
測試是:
input = [50, 30, 60, 10, 0, 40]
output = [0, 0, 0]
k_largest(input,output)
print(output)
答:
[40, 50, 60]
這是我的代碼:(該merge_sort功能只是用來排序輸入列表中的降序排列。)
def k_largest(input, output):
merge_sort(input)
input = input[:len(output)]
input = input[::-1]
output = list(input)
print (output)
def merge_sort(list):
count = 0
for index in range(1, len(list)):
value = list[index]
i = index - 1
while i >= 0:
if value > list[i]:
list[i+1] = list[i]
list[i] = value
i = i - 1
count = count + 1
else:
break
出於某種原因,我的代碼只是輸出原始輸出列表,而不是新的輸出列表。
例如:
[0, 0, 0]
相反的:
[40, 50, 60]
我敢肯定有這樣做還有一個更有效的方法。
避免使用'list'作爲變量名稱,因爲它會影響內置方法'list()'。 –
只需使用['heapq.nlargest'](https://docs.python.org/library/heapq.html) –