ValueError: too many values to unpack (expected 2), while the recursive function has 2 values to return

ValueError: too many values to unpack (expected 2), while the recursive function has 2 values to return

我尝试计算主元和快速排序中的值之间的比较。但是当我使用 2 return 值创建递归方法时,代码不喜欢它。那么任何人都可以帮助这个错误是什么?或者知道其他计算比较的方法? (没有全局变量)。

def myPartition(a, lo, hi, co):
    pivot = a[hi]
    i = (lo - 1)
    for j in range (lo, hi):
        co = co + 1
        if a[j] <= pivot:
            i = i + 1
            a[i], a[j] = a[j],a[i]
            
    a[i+1], a[hi] = a[hi],a[i+1]
    res_i = i+1
    
    return res_i, co

 
def myQuicksort_a(a, lo, hi, co):
    if lo >= hi:
        return a
    p, co_res_a = myPartition(a, lo, hi, co)
    print("co_res_a:",co_res_a)
    a, co_res_b = myQuicksort_a(a, lo, p-1, co_res_a)
#     a = myQuicksort(a, p+1, hi)
    return a, co_res_b

array = [0,3,5,2,4,1,2,3]
l = len(array)
result, counter = myQuicksort_a(array,0,l-1, 0)
print(result)
print(counter)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-62d9d9dc7ae9> in <module>
     27 array = [0,3,5,2,4,1,2,3]
     28 l = len(array)
---> 29 result, counter = myQuicksort_a(array,0,l-1, 0)
     30 print(result)
     31 print(counter)

<ipython-input-4-62d9d9dc7ae9> in myQuicksort_a(a, lo, hi, co)
     21     p, co_res_a = myPartition(a, lo, hi, co)
     22     print("co_res_a:",co_res_a)
---> 23     a, co_res_b = myQuicksort_a(a, lo, p-1, co_res_a)
     24 #     a = myQuicksort(a, p+1, hi)
     25     return a, co_res_b

<ipython-input-4-62d9d9dc7ae9> in myQuicksort_a(a, lo, hi, co)
     21     p, co_res_a = myPartition(a, lo, hi, co)
     22     print("co_res_a:",co_res_a)
---> 23     a, co_res_b = myQuicksort_a(a, lo, p-1, co_res_a)
     24 #     a = myQuicksort(a, p+1, hi)
     25     return a, co_res_b

<ipython-input-4-62d9d9dc7ae9> in myQuicksort_a(a, lo, hi, co)
     21     p, co_res_a = myPartition(a, lo, hi, co)
     22     print("co_res_a:",co_res_a)
---> 23     a, co_res_b = myQuicksort_a(a, lo, p-1, co_res_a)
     24 #     a = myQuicksort(a, p+1, hi)
     25     return a, co_res_b

ValueError: too many values to unpack (expected 2)

您应该修复这部分代码

if lo >= hi:
    return a

myQuicksort_a 函数中。因为一旦使用此路径,您的函数 returns 就会产生一个而不是两个结果。因此,得到一个错误,这个值不能被分解成两个。