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