鱼C论坛

 找回密码
 立即注册
查看: 2542|回复: 0

[技术交流] python学习之第21讲笔记

[复制链接]
发表于 2017-6-18 10:28:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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]]

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 16:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表