版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a6864657/article/details/88074396
lambda 匿名函数
用lambda关键词能创建小型匿名函数, Lambda函数能接收任何数量的参数但只能返回一个表达式的值, 不能直接调用print,因为lambda需要一个表达式。
Python函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:
func( 1, 2 lamdba m, n: m + n )
求:将列表中的元素升序排列
li = [3, 5, -4, -1, 0, -2, -6]
t = [ x for x in li if x > 0 ] 运行速度快 (timeit测试)
t = sorted(ambda x: x > 0, li) 此之
[ 3, 5 ]
t = filter(lambda x: x < 0, li)
[ -4, -1, -2, -6 ]
students = [
{"name": "zhangsan", "age": 18},
{"name": "lisi", "age": 19},
{"name": "wangwu", "age": 17}
]
students.sort(key = lambda x: x['name']) 按照年龄排序
students.sort(key = lambda x: x['age']) 按姓名排序
求:将字典筛选中的元素
di = {x : randint(60, 100) for x in range(1, 3)}
new = { k: v for k, v in di.iteritems() if v > 89 } # iter 迭代
print(di)
print(new)
{1: 90, 2:75, 3: 89}
{1:90, 3:89}
字典元素排序
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
di = { 'a': 1, 'd': 2, 'g': 3, , 'f‘: 8, 'c': 6 }
di.keys() [ 'a', 'd', 'g', 'f', 'c' ]
di.values() [1, 2, 3, 8, 6 ]
zip(di.keys() , di.values() ]
[ ( 'a', 1 ), ( 'd', 2 ) , ( 'g', 3 ), ( 'f', 8 ), ( 'c' , 6 ) ]
sorted( )
di.items( )
( 'a', 1 ), ( 'd', 2 ) , ( 'g', 3 ), ( 'f', 8 ), ( 'c' , 6 )
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。