limdba 如何 在列表,字典, 集合中根据条件筛选数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 ) 

在这里插入图片描述
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/a6864657/article/details/88074396