鱼C论坛

 找回密码
 立即注册
查看: 2678|回复: 1

[学习笔记] L21 匿名lmabda函数 列表推导式

[复制链接]
发表于 2020-4-2 18:41:44 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 foxdai 于 2020-4-8 18:24 编辑

匿名函数和Filter()、和多重过滤条件下的列表推导式

一、匿名函数
格式:list(filter(lambda <变量>: <含变量的表达式><条件>,<iterable>))
说明:
1. 条件,需要完整的语句,即if...else...一个关键词都不能少;
2. 条件,只能简单的条件,多重条件无法实现(用列表推导式);

二、列表推导式
格式:[<表达式><for var1 in iterable1 <条件11><条件12><...:>最外层><for var2 in iterable2 <条件21><条件22><条件...>: 嵌套内第2层>....]
说明:条件,无需完整的语句,即仅有if即可;

<iterable>可迭代列表,可以在公式之前定义

dict()字典函数
dict({1:2,3:4,5:6})

{a,b,... }集合类
{a1:b1,a2:b2,a3:b3,...}字典类,是集合类的一种特殊类
[a,b,... ]列表类

zip() 将2个列表以元组形式绑定
>>> list(zip([1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
结果:[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

list(filter(lambda x:x*2,list(range(10))))
表达式结果为0的值被忽略,为什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-2 19:04:51 | 显示全部楼层
提问的 帖子类型应该是问题求助

Q:list(filter(lambda x:x*2,list(range(10))))
表达式结果为0的值被忽略,为什么?

A:
因为0*2为0
而为0的值是假值,会被过滤
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 18:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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