0: if len(left_list) > 0 and l-6ren">
gpt4 book ai didi

python - 合并排序中的不可排序类型 "int() <= list()"

转载 作者:行者123 更新时间:2023-11-30 23:20:29 26 4
gpt4 key购买 nike

此合并排序实现因以下错误而失败:“if (left_list[0] <= right_list[0]): TypeError: unorderable types: int() <= list()。”

为什么 right_list[0] 被认为是列表而不是 int?

def merge_sort(array):

def merge(left_list, right_list):

result = []

while len(left_list) > 0 or len(right_list) > 0:

if len(left_list) > 0 and len(right_list) > 0:

if (left_list[0] <= right_list[0]):

result.append(left_list[0])

left_list = left_list[1:]

else:
result.append(right_list[0])

right_list = right_list[1:]



elif len(left_list) > 0:

result.append(left_list)
left_list = left_list[1:]

elif len(right_list) > 0:

result.append(right_list[0])
right_list = right_list[1:]

return result

if len(array) < 2:

return array

i_mid = len(array)//2

left = array[:i_mid]

right = array[i_mid:]

left = merge_sort(left)
right = merge_sort(right)

result = merge(left, right)

return result

最佳答案

错误:一个分支返回一个列表,而它本应是一个项目:)已修复。

来源

def merge_sort(array):
def merge(left_list, right_list):
result = []
while len(left_list) > 0 or len(right_list) > 0:
if len(left_list) > 0 and len(right_list) > 0:
if (left_list[0] <= right_list[0]):
result.append(left_list[0])
left_list = left_list[1:]
else:
result.append(right_list[0])
right_list = right_list[1:]
elif len(left_list) > 0:
result.append(left_list[0]) # <==
left_list = left_list[1:]
elif len(right_list) > 0:
result.append(right_list[0])
right_list = right_list[1:]
return result

if len(array) < 2:
return array

i_mid = len(array)//2
left = array[:i_mid]
right = array[i_mid:]
left = merge_sort(left)
right = merge_sort(right)
result = merge(left, right)
return result

print merge_sort([5,4,3,1,2])

输出

[1, 2, 3, 4, 5]

关于python - 合并排序中的不可排序类型 "int() <= list()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25493848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com