最初级实现法
#sorted 实现
lst = [1,2,5,4,2,3,5,6]
def sort(iterable):
ret = []
for x in iterable: #迭代原来的数据
for i,y in enumerate(ret): #迭代新的列表里的元素,并输出他们的角标
if x > y:
ret.insert(i,x)
break
else:
ret.append(x)
return ret
print(sort(lst))
进阶
lst = [1,2,5,4,2,3,5,6]
def sort(iterable,reverse = False):
ret = []
for x in iterable: #迭代原来的数据
for i,y in enumerate(ret): #迭代新的列表里的元素,并输出他们的角标
flag =x > y if not reverse else x < y
#这里是布尔值
if flag:
ret.insert(i,x)
break
else:
ret.append(x)
return ret
print(sort(lst))
嵌套函数的实现
lst = [1,2,5,4,2,3,5,6]
def sort(iterable,reverse = False):
#以下为重点,嵌套函数,为内部函数
def comp(a,b):
# flag = a > b if not reverse else a < b
return a > b if not reverse else a < b
ret = []
for x in iterable: #迭代原来的数据
for i,y in enumerate(ret): #迭代新的列表里的元素,并输出他们的角标
#这里是布尔值
if comp(x,y):
ret.insert(i,x)
break
else:
ret.append(x)
return ret
print(sort(lst))
高阶函数,参数是函数,简单实现
#sorted 实现
lst = [1,2,5,4,2,3,5,6]
def comp(a, b):
return a > b
#符合高阶函数,参数key = comp为函数
def sort(iterable,key = comp):
#以下为重点,嵌套函数,为内部函数
ret = []
for x in iterable: #迭代原来的数据
for i,y in enumerate(ret): #迭代新的列表里的元素,并输出他们的角标
#这里是布尔值
if comp(x,y):
ret.insert(i,x)
break
else:
ret.append(x)
return ret
print(sort(lst))
最终想要的额结果
#sorted 实现
lst = [1,2,5,4,2,3,5,6]
def comp(a, b):
return a > b
#符合高阶函数,参数key = comp为函数
def sort(iterable,key = comp,reverse = False):
ret = []
for x in iterable: #迭代原来的数据
for i,y in enumerate(ret): #迭代新的列表里的元素,并输出他们的角标
flag = comp(x,y) if reverse else comp(y,x)
#这里是布尔值
if flag:
ret.insert(i,x)
break
else:
ret.append(x)
return ret
print(sort(lst))