Python3入门基础:第十二篇(sort函数和lambda表达式)

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

你可能感兴趣的:(python)