马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
lambda
python中lambda的语法非常精简
基本语法是在冒号的左边放原函数的参数,可以有多个参数,用逗号隔开即可,冒号左边是返回值
>>> g= lambda x,y:x+y
>>> g(3,4)
7
好用的内建函数filter 与 map
1、filter()
定义:fliter有两个参数,第一个参数可以是一个函数也可以是None。
若是一个函数,则将第二个可迭代数据里的每一个元素作为函数的参数进行运算,把返回为true的值筛选出来,举例
>>> list(filter(lambda x:x%2,range(10)))
[1, 3, 5, 7, 9]
若是None,则直接将第二个参数中位true的值筛选出来,举例
>>> list(filter(None,[1,0,True,False]))
[1, True]
2、map()
定义:与filter()函数形式一致,实现对可迭代对象的映射,但其第一个参数必须是一个函数对象,将序列的每一个元素作为函数的参数进行运算加工,返回所有加工后的元素构成的新序列
>>> list(map(lambda x:x%2,range(9)))
[0, 1, 0, 1, 0, 1, 0, 1, 0]
快速求出30以内3的倍数
1、列表推导式
>>> [x for x in range(1,30) if x%3==0]
[3, 6, 9, 12, 15, 18, 21, 24, 27]
2、filter与lambda
>>> list(filter(lambda x:not(x%3),range(1,30)))
[3, 6, 9, 12, 15, 18, 21, 24, 27]
3、zip函数会将两数以元组的形式绑定在一起,用map()与lambda可以实现以列表的形式绑定在一起
>>> list(zip([1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
>>> list(map(lambda x, y : [x, y], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] |