我的代碼對值串列進行了快速排序:
def Quick_sort_random(random_list):
r = random_list.copy()
def inner(r):
if len(r) < 2:
return r
p = random.randint(0, len(r) - 1)
pivot = r[p]
left = list(filter(lambda x: x <= pivot, r[:p] r[p 1:]))
right = list(filter(lambda x: x > pivot, r[:p] r[p 1:]))
return Quick_sort_random(left) [pivot] Quick_sort_random(right)
a = inner(r)
return random_list,a
這會引發錯誤:
TypeError: can only concatenate tuple (not "list") to tuple
我有 inner() 函式,因為我想同時回傳原始串列和排序串列。我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
您的Quick_sort_random函式回傳一個元組,但您只需要其中的第二項進行排序。將最后一行更改inner為:
return Quick_sort_random(left)[1] [pivot] Quick_sort_random(right)[1]
uj5u.com熱心網友回復:
只需在inner函式中回傳排序串列:
import random
def Quick_sort_random(random_list):
r = random_list.copy()
def inner(r):
if len(r) < 2:
return r
p = random.randint(0, len(r) - 1)
pivot = r[p]
left = list(filter(lambda x: x <= pivot, r[:p] r[p 1:]))
right = list(filter(lambda x: x > pivot, r[:p] r[p 1:]))
unsorted_left, sorted_left = Quick_sort_random(left)
unsorted_right, sorted_right = Quick_sort_random(right)
return sorted_left [pivot] sorted_right
a = inner(r)
return random_list,a
print(Quick_sort_random([4,5,1,5,2,3]))
輸出:
([4, 5, 1, 5, 2, 3], [1, 2, 3, 4, 5, 5])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383345.html
上一篇:在串列中迭代串列,遞回
