鱼C论坛

 找回密码
 立即注册
查看: 2972|回复: 7

[已解决]关于lambda的匿名函数问题

[复制链接]
发表于 2016-7-2 23:35:03 | 显示全部楼层 |阅读模式

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

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

x
ef q():
        for each in range(1,100):
                if each % 3 == 0:
                        print(each,end = ' ')
我可以这样写屌丝函数 能求出3的倍数但我用lambda匿名函数该怎么写呢?list(lambda d : d if d % 3  else None ,range(1,100))小弟这样写就报错 正确的写法是怎么样的呢?
最佳答案
2016-7-3 14:53:19
可以这样写:
  1. >>> list(filter(lambda x : not(x%3),range(1,100)))
  2. [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]
复制代码

当然也可以不用lambda,而用列表推导式。
  1. [each for each in range(1, 100) if each % 3 == 0]
  2. [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]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-2 23:55:31 | 显示全部楼层
list(map(lambda x : x if x%3==0 else None  ,range(1,100)))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-3 01:04:57 | 显示全部楼层
小火木 发表于 2016-7-2 23:55
list(map(lambda x : x if x%3==0 else None  ,range(1,100)))

请问一下为什么要加map函数呢??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-3 01:15:12 | 显示全部楼层
xd258749745 发表于 2016-7-3 01:04
请问一下为什么要加map函数呢??

你查一下map这个函数的用法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-3 14:53:19 | 显示全部楼层    本楼为最佳答案   
可以这样写:
  1. >>> list(filter(lambda x : not(x%3),range(1,100)))
  2. [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]
复制代码

当然也可以不用lambda,而用列表推导式。
  1. [each for each in range(1, 100) if each % 3 == 0]
  2. [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]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-3 15:47:09 | 显示全部楼层
冬雪雪冬 发表于 2016-7-3 14:53
可以这样写:

当然也可以不用lambda,而用列表推导式。

请问一下列表推导式是不是就是for循环呢?还有我写程序逻辑真是太糟糕了用数学的方法能写出来,但用代码就不知道如何表示了!这该怎么锻炼呢?我同学喊我去报培训班不知道有用没?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-3 20:42:34 | 显示全部楼层
xd258749745 发表于 2016-7-3 15:47
请问一下列表推导式是不是就是for循环呢?还有我写程序逻辑真是太糟糕了用数学的方法能写出来,但用代码 ...

1.是的,可以有一重或多重for循环,也可以有if
2.多写程序,多看别人的程序,我们板块的小练习中每个人的程序都不妨看看。
3.培训班的质量良莠不齐,一定要选择好的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-3 22:14:40 | 显示全部楼层
冬雪雪冬 发表于 2016-7-3 20:42
1.是的,可以有一重或多重for循环,也可以有if
2.多写程序,多看别人的程序,我们板块的小练习中每个人 ...

我以后想往网络安全发展可惜那培训班都是教的软件开发,先不管了先把当前要学的东西学好了!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 13:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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