高阶函数实现-sort
1.实现排序的方式一
def mysort(iter):
ret = []
for x in iter:
for k,v in enumerate(ret):
if x > v:#通过这个来判断升序降序
ret.insert(k,x)
break
else:
ret.append(x)
return ret
print(mysort([1, 2, 45, 6, 7, 8]))
2.通过引入reverse参数来比较
def mysort(iter,reverse=False):
ret = []
for x in iter:
for k,v in enumerate(ret):
if reverse:
flag = x > v
else:
flag = x < v
if flag:
ret.insert(k,x)
break
else:
ret.append(x)
print(ret)
return ret
mysort([1,2,4,3,6,9,8])
可以简化一下:
def mysort(iter, reverse=True):
ret = []
for x in iter:
for k, v in enumerate(ret):
flag = x > v if reverse else x < v
if flag:
ret.insert(k, x)
break
else:
ret.append(x)
print(ret)
return ret
mysort([1, 2, 4, 3, 6, 9, 8])
3.方式三,引入参数lambda函数
def mysort(iter, key=lambda x,y:x>y):
ret = []
for x in iter:
for k,v in enumerate(ret):
if key(x,v):
ret.insert(k,x)
break
else:
ret.append(x)
print(ret)
return ret
mysort([1,4,6,8,3,5])
改进版:
def mysort(iter, reverse=False, key=lambda x, y: x < y):
ret = []
for x in iter:
for k,v in enumerate(ret):
flag = key(x,v)
if flag:
ret.insert(k,x)
break
else:
ret.append(x)
print(ret)
return ret
mysort([1, 4, 6, 8, 3, 5])