小编典典

sort()返回None

python

码:

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。


阅读 314

收藏
2021-01-20

共1个答案

小编典典

@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 []永远不会返回,上述其他情况不允许它返回。

2021-01-20