sort()返回None

发布于 2021-01-29 15:02:14

码:

import math
import time
import random
class SortClass(object):
    def sort1(self, l):
        if len(l)==1:
            return l
        elif len(l)==2:
            if l[0]<l[1]:
                return l
            else:
                return l[::-1]
        else:
            pivot=math.floor(len(l)/2)
            a=l[pivot:]
            b=l[:pivot]
            a2=self.sort1(a)
            b2=self.sort1(b)
            if a2==None or b2==None:
                a2=[]
                b2=[]
            return (a2+b2).sort()
        return []
Sort=SortClass()
x=[20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
print(Sort.sort1(x))

即使在两种情况下它应返回一个空列表,代码也会输出None:

return []

a2=self.mergeSort(a)
b2=self.mergeSort(b)
if a2==None or b2==None:
    a2=[]
    b2=[]
return (a2+b2).sort()

详细信息:该代码用于我为python练习制作的列表排序模块(我在python上相对较新)。sort1是修改后的mergesort。

关注者
0
被浏览
113
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    @reut首先了解它,但是

    return sorted(a2+b2)
    

    return (a2+b2).sort()
    

    另外

    if a2 == None or b2 == None:
        a2 = []
        b2 = []
    

    应该

    if a2 == None:
        a2 = []
    if b2 == None:
        b2 = []
    

    如果将两者都设置为[]则都不设置,则意味着a2为[1]且b2都不为您将a2丢掉。我猜这是意外的。

    同样在代码中,在较低的sortClass中有一个大写的S

    另外return []永远不会返回,上述其他情况不允许它返回。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看