ValueError:要解压缩的值太多(预期为2),而递归函数有2个值要返回

2024-05-23 14:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试计算轴与快速排序中的值之间的比较。但是当我使用2个返回值创建递归方法时,代码不喜欢它。那么有人能帮我解释一下错误是什么吗?或者知道其他计算比较的方法吗?(没有全局变量)

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)

Tags: 方法inloinputreturnipythoncounterres
1条回答
网友
1楼 · 发布于 2024-05-23 14:23:07

您应该修复这部分代码

if lo >= hi:
    return a

myQuicksort_a函数中。因为一旦使用此路径,函数将返回一个而不是两个结果。因此,得到一个错误,该值不能分解为两个

相关问题 更多 >