python - ValueError:要解包的值太多(预期为 2),而递归函数有 2 个值要返回
问题描述
我尝试计算枢轴和快速排序中的值之间的比较。但是当我使用 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)
解决方案
您应该修复这部分代码
if lo >= hi:
return a
在myQuicksort_a
函数中。因为一旦使用此路径,您的函数将返回一个而不是两个结果。因此,得到一个错误,这个值不能被分解成两个。
推荐阅读
- java - 转义字符串中的流氓反斜杠
- string - 如何在单个函数中接受 &str、String 和 &String?
- javascript - 无法在 knockoutJS 视图模型中映射 .json 数据
- apache-camel - 如何从 Apache Camel 中的 Azure 事件中心读取数据
- pdf - PDF 自定义属性值中是否存在不安全字符?
- docker - Docker-Compose ParserError:解析块映射时
- python - 为什么我的 tkinter 代码在调用函数 [python3] 后停止运行?
- android - 如何使用背景颜色不等于 colorPrimary
- python - 重用打开的连接到另一个脚本
- c# - 保存购买的物品统一