运行时Python合并排序类型错误

运行时Python合并排序类型错误,python,python-3.x,mergesort,Python,Python 3.x,Mergesort,我正在编写一个未运行的合并排序程序。 它显示了错误 if a[j] < b[k]: TypeError:“看起来您正在将整数列表附加到此处整数列表的末尾: l=l.B[k:] 所以如果l=[1,2,3]和b[k:][4,5],你会得到 l、 附录B[k:] 输出: [1, 2, 3, [4, 5]] 另外,list.append返回None,您不需要将其分配给l。尝试使用 l、 extendb[k:] 小心,您正在操作循环中的全局变量l。我怀疑这是您的本意。当询问产生异常的代码时,您

我正在编写一个未运行的合并排序程序。 它显示了错误

if  a[j] < b[k]:

TypeError:“看起来您正在将整数列表附加到此处整数列表的末尾:

l=l.B[k:] 所以如果l=[1,2,3]和b[k:][4,5],你会得到

l、 附录B[k:] 输出: [1, 2, 3, [4, 5]] 另外,list.append返回None,您不需要将其分配给l。尝试使用

l、 extendb[k:]
小心,您正在操作循环中的全局变量l。我怀疑这是您的本意。当询问产生异常的代码时,您应该始终在问题中包含完整的回溯。复制回溯并将其粘贴到问题中,然后将其格式化为代码选择它并键入ctrl K当您进行合并\u sorta和合并\u sortb时,您不会更改a和b。确保执行a=merge\u sorta和b=merge\u sortb。@chrisayock每次调用函数时都会创建一个单独的副本。那它怎么会引起问题呢?没有单独的副本。但是,函数中的名称l是函数的局部名称,因此它是全局范围中l的单独名称。
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