簡體   English   中英

從 Python 中的合並排序函數返回的錯誤

[英]Error returned from a Merge Sort function in Python

我嘗試編寫一個合並排序函數,如下所示。 但是當我嘗試測試它時,我收到一個錯誤:

the name mergesort is not defined

誰能指出這個錯誤的原因?

    def merge(self,a,b):

    sorted_list=[]

    while len(a)!=0 and len(b)!=0:

        if a[0].get_type()<b[0].get_type():
            sorted_list.append(a[0])
            a.remove(a[0])
        else:
            sorted_list.append(b[0])
            b.remove(b[0])
    if len(a)==0:
        sorted_list+=b
    else:
        sorted_list+=a

    return sorted_list

def mergesort(self,lis):

    if len(lis) == 0 or len(lis) == 1:
        return lis
    else:
        middle = len(lis)// 2
        a = mergesort(lis[middle:]) #in pycharm the next 3 lines are with red underlined
        b = mergesort(lis[middle:])
        return merge(a,b)

self是這些方法的參數之一這一事實意味着它們很可能是類的一部分(您在帖子中省略了一個類)。

如果這是正確的,您需要使用self.mergesort(l)進行調用,其中l是一個列表。

作為針對您將發現的下一個錯誤的先發制人的措施return self.merge(a, b)出於類似的原因,您需要將return merge(a, b)替換為return self.merge(a, b)

最后,我不得不問為什么你將所有這些函數定義為一個類的方法。 他們似乎不依賴任何共享數據。 您是否確信在模塊范圍內聲明它們不會更合適?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM