sort函数:
#sort函数 排序
#简单数据类型
a = [22,10,24,21,20]
b = a.sort()
print(a)
c = a.sort(reverse=True)
print(a)
#复杂排序
from functools import cmp_to_key
persons = [
{'name':'ming ming',
'age':18
},
{'name':'hua hua',
'age':22
},
{'name':'le le',
'age':22
}
]
#先比较年龄大小,如果年龄相等,在比较姓名首字母
def compare(a,b):
if a['age'] > b['age']:
return 1
elif a['age'] < b['age']:
return -1
#如果年龄相等
else:
if a['name'] > b['name']:
return 1
else:
return -1
persons.sort(key=cmp_to_key(compare))
print(persons)
打印结果:
[10, 20, 21, 22, 24]
[24, 22, 21, 20, 10]
[{'name': 'ming ming', 'age': 18}, {'name': 'hua hua', 'age': 22}, {'name': 'le le', 'age': 22}]
lambda表达式
#根据年龄比较
persons = [
{'name':'ming ming',
'age':18
},
{'name':'hua hua',
'age':22
},
{'name':'le le',
'age':22
}
]
def my_cmp(x):
return x['age']
persons.sort(key=my_cmp)
print(persons)
#利用lambda表达式 匿名函数 此处定义方式:lambda x:x['age']
persons.sort(key=lambda x:x['age'])
print(persons)
#lambda表达式比较适合代码只有一行的函数
打印结果:
[{'age': 18, 'name': 'ming ming'}, {'age': 22, 'name': 'hua hua'}, {'age': 22, 'name': 'le le'}]
[{'age': 18, 'name': 'ming ming'}, {'age': 22, 'name': 'hua hua'}, {'age': 22, 'name': 'le le'}]
示例:求两个数的四则运算结果
a = 12
b = 13
def calculate(a,b,func):
result = func(a,b)
return result
result1 = calculate(a,b,lambda x,y:x+y)
result2 = calculate(a,b,lambda x,y:x-y)
result3 = calculate(a,b,lambda x,y:x*y)
result4 = calculate(a,b,lambda x,y:x/y)
print(str(result1)+'\n',str(result2)+'\n',str(result3)+'\n',result4)
打印结果:
25
-1
156
0.9230769230769231