[英]Python Merge Sort TypeError at Runtime
我正在編寫未運行的merge_sort
程序。 顯示錯誤
if a[j] < b[k]:
TypeError:“ int”和“ list”的實例之間不支持“ <”
l=[int(n) for n in input().split()]
def merge_sort(l):
if len(l)==1:
return l
else:
a=l[:len(l)//2]
b=l[len(l)//2:]
print(a,b)
a=merge_sort(a)
b=merge_sort(b)
j=0
k=0
for i in range(0,len(l)):
if a[j] < b[k]:
l[i]=a[j]
j+=1
if j==len(a):
l=l.append(b[k:])
break
else:
l[i]=b[k]
k+=1
if k==len(b):
l=l.append(a[j:])
break
# print(l)
return l
print(merge_sort(l))
這是錯誤消息。
Traceback (most recent call last):
File "E:/STUFF/Python/Scripts/COURSERA/merge_sort.py", line 30, in <module>
print(merge_sort(l))
File "E:/STUFF/Python/Scripts/COURSERA/merge_sort.py", line 10, in merge_sort
merge_sort(b)
File "E:/STUFF/Python/Scripts/COURSERA/merge_sort.py", line 15, in merge_sort
if a[j] < b[k]:
TypeError: '<' not supported between instances of 'int' and 'list'
Process finished with exit code 1
看起來您在這里將整數列表附加到整數列表的末尾:
l=l.append(b[k:])
因此,如果l = [1,2,3]和b [k:] = [4,5],您將得到
l.append(b[k:])
Out:
[1, 2, 3, [4, 5]]
同樣,list.append()返回None,並且您不需要將其分配給l。 嘗試使用
l.extend(b[k:])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.