我在使用Python中的一些代码时遇到了问题:
def sort(number_list):
if len(number_list <= 1):
return number_list
front_list = []
back_list = []
counter = 0
half = len(number_list)//2
for x in number_list:
if counter < half:
front_list.append(x)
counter += 1
else:
back_list.append(x)
front_list = sort(front_list)
back_list = sort(back_list)
print(front_list)
print(back_list)
return merge(front_list, back_list)
def merge(front_list, back_list):
output = []
i = 0
j = 0
lenght1 = len(front_list)
length2 = len(back_list)
while i < lenght1 or j < length2:
if i < lenght1 and j < length2:
if front_list[i] <= back_list[j]:
output += [front_list[i]]
i = i + 1
else:
output += [back_list[j]]
j = j + 1
elif i < front_list:
output += [front_list[i]]
i = i+1
else:
output += [back_list[j]]
j = j+1
return output
我一直得到类型错误无法解决的类型:list()&lt; = int() 有人能让我知道我哪里出错吗?谢谢!
答案 0 :(得分:0)
sort()
函数中的if语句应如下所示:
if len(number_list) <= 1:
return number_list
此外,在merge()
elif i < front_list:
应该是
elif i < lenght1:
答案 1 :(得分:0)
仅供参考,您可以简化逻辑somehwat,无论是在使用python切片还是稍微改变合并逻辑方面:
def sort(number_list):
if len(number_list) <= 1:
return number_list
half = len(number_list)//2
front_list = sort(number_list[:half])
back_list = sort(number_list[half:])
print(front_list)
print(back_list)
return merge(front_list, back_list)
def merge(front_list, back_list):
output = []
j = 0
for i in range(front_list):
while j < len(back_list) and front_list[i] > back_list[j]:
output.append(back_list[j])
j += 1
output.append(front_list[i])
for x in range(j, len(back_list)):
output.append(back_list[x])
return output