鱼C论坛

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

[技术交流] 021讲总结

[复制链接]
发表于 2017-7-31 17:18:13 | 显示全部楼层 |阅读模式

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

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

x
lambda表达式
lambda关键字创建匿名函数。用法:lambda + 原函数参数 : 原函数返回值
返回函数对象,一个没有名字的函数对象[ 多个参数用逗号隔开 ]
>>> def ds(x):
        return 2 * x + 1
>>> ds(5)
11
>>> lambda x: 2 * x + 1
<function <lambda> at 0x0000000002F5CB70>
>>> a = lambda x: 2 * x + 1
>>> a(5)
11

>>> def add(x, y):
        return x + y
>>> add(3, 4)
7
>>> lambda x,y : x+y
<function <lambda> at 0x0000000002F5CD08>
>>> g = lambda x,y : x + y
>>> g(3, 4)
7

过滤器filter()  保留有用信息,舍弃无用信息
filter(function(函数方法或者None类型),iterable(迭代对象))
>>> filter(None, [1, 0, False, True])
<filter object at 0x0000000002EBFE48>
>>> list(filter(None, [1, 0, False, True]))
[1, True]

当filter()和lambda结合起来:
>>> def odd(x):
        return x % 2
>>> temp = range(10)
>>> show = filter(odd, temp)
>>> list(show)
[1, 3, 5, 7, 9]

>>> list(filter(lambda x : x % 2, range(10)))
[1, 3, 5, 7, 9]

用列表推导式代替这两者的结合:
>>> [i for i in range(1, 100) if (i%3==0)]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

映射map() ,使两个参数产生映射关系。如:
map(function(函数方法),iterable(迭代对象))
>>> list(map(lambda x : x*2, range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

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

本帖被以下淘专辑推荐:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 14:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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