鱼C论坛

 找回密码
 立即注册
查看: 1141|回复: 9

[已解决]大神在哪里第四季!

[复制链接]
发表于 2018-1-5 17:17:32 | 显示全部楼层 |阅读模式

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

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

x
list(map(lambda x : x * 2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]


list(filter(lambda x : x * 2,range(10)))  大神,为什么filter的结果是这个? 求相老师教小学生那样耐心   求解!
[1, 2, 3, 4, 5, 6, 7, 8, 9]
最佳答案
2018-1-7 19:20:15
PYYP 发表于 2018-1-7 19:08
list(filter(lambda x : x * 2,range(10)))

这里面的过滤对象是  x  还是 x*2  (我一直认为是x*2)
...

用数字做判断的时候,0是False,非0数字都是True
比如如下代码
  1. t = range(10)
  2. for i in t:
  3.     if i:
  4.         print(i)
复制代码

会打印出1-9,而不会有0
因此这个filter只过滤掉了其平方布尔值为False的0,而平方非0的1-9都得以保留
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-5 18:16:09 | 显示全部楼层
筛出结果为True的项目
range(10):0,1,2,3,4,5,6,7,8,9
lambda x:x*2:0,2,4,6,8,10,12,14,16,18【结果为True的有2,4,6,8,10,12,14,16,18】
返回2,4,6,8,10,12,14,16,18对应的x【即1,2,3,4,5,6,7,8,9】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-5 18:32:19 | 显示全部楼层
chakyam 发表于 2018-1-5 18:16
筛出结果为True的项目
range(10):0,1,2,3,4,5,6,7,8,9
lambda x:x*2:0,2,4,6,8,10,12,14,16,18【结果为Tr ...

filter 不是叫 过滤器吗?  怎么知道我要过滤什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 22:43:10 | 显示全部楼层
filter(过滤函数, 可迭代对象)
def filt(x):
    return x < 5
print(list(filter(filt, range(10))))

#结果
[0, 1, 2, 3, 4]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-7 19:08:00 | 显示全部楼层
本帖最后由 PYYP 于 2018-1-7 19:12 编辑
yjsx86 发表于 2018-1-5 22:43
filter(过滤函数, 可迭代对象)
def filt(x):
    return x < 5


list(filter(lambda x : x * 2,range(10)))

这里面的过滤对象是  x  还是 x*2 (我一直认为是x*2)

可结果明明是 X  的值,   重点是 为什么是 X?  而不是让你举例子 ,例子我都懂,为什么是X  而不是其他????

def filt(x):
    return x < 5
print(list(filter(filt, range(10))))


这里的过滤对象 谁都知道 给了一个   小于5  的范围!!

那我的   lambda x : x * 2  过滤范围在哪里??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 19:20:15 | 显示全部楼层    本楼为最佳答案   
PYYP 发表于 2018-1-7 19:08
list(filter(lambda x : x * 2,range(10)))

这里面的过滤对象是  x  还是 x*2  (我一直认为是x*2)
...

用数字做判断的时候,0是False,非0数字都是True
比如如下代码
  1. t = range(10)
  2. for i in t:
  3.     if i:
  4.         print(i)
复制代码

会打印出1-9,而不会有0
因此这个filter只过滤掉了其平方布尔值为False的0,而平方非0的1-9都得以保留
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 20:01:31 | 显示全部楼层
PYYP 发表于 2018-1-7 19:08
list(filter(lambda x : x * 2,range(10)))

这里面的过滤对象是  x  还是 x*2  (我一直认为是x*2)
...

你回复的时候似乎有点小情绪啊
我当时只是觉得这个问题太基础,完全没必要来发帖求助,因为有这时间还不如百度一下"python filter"
所以随便写了个例子就丢上来
这也怪我,毕竟我不是大神,这里打扰了抱歉

顺便翻看了你的帖子 别人回答了你的问题 却还嘲讽别人不专业
就这种态度,我想说你应该去报个培训班 自学不适合你
毕竟别人收了你的钱你想怎么说随你便
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2018-1-7 20:23:21 | 显示全部楼层
holdme 发表于 2018-1-7 19:20
用数字做判断的时候,0是False,非0数字都是True
比如如下代码

弱弱的问一下 这里的  if   i     的  if  是什么用  怎么过滤掉了  0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 20:31:23 | 显示全部楼层
PYYP 发表于 2018-1-7 20:23
弱弱的问一下 这里的  if   i     的  if  是什么用  怎么过滤掉了  0

if 就是判断True/False 在这段代码里就是告诉你0会被判断为False,而非0会被判断为True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-7 20:34:52 | 显示全部楼层
holdme 发表于 2018-1-7 20:31
if 就是判断True/False 在这段代码里就是告诉你0会被判断为False,而非0会被判断为True

纳尼?   if 还可以这样理解  ,,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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