鱼C论坛

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

[已解决]ist(filter(lambda x : x % 2, range(10)))看不懂

[复制链接]
发表于 2020-7-17 09:34:55 | 显示全部楼层 |阅读模式

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

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

x
def add(x):
        return x % 2

>>> temp = range(10)
>>> show = filter(add,temp)
>>> list(show)
[1, 3, 5, 7, 9]
下面这一块不懂求各位大佬给我讲讲!!!
>>> list(filter(lambda x : x % 2, range(10)))
[1, 3, 5, 7, 9]
最佳答案
2020-7-17 17:33:19
list(filter(lambda x : x % 2, range(10))) 相当于:
>>> func = lambda x: x % 2    # 这是一个判断奇偶数的函数,奇数返回 1,偶数返回 0
>>> result = []
>>> for i in range(10):
        if func(i):    # 如果 func(i) 为 1(True),也就是当 i 为奇数的时候,将 i 添加进 result 列表中
                result.append(i)

                
>>> result
[1, 3, 5, 7, 9]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-17 09:42:53 | 显示全部楼层
这是一个简单的fliter实现(yield不用管,你后面会学到)
def filter(func, seq):
    if func == None:
        for each in seq:
            if each:
                yield each
    else:
        for each in seq:
            if func(each):
                yield each
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-17 11:01:17 | 显示全部楼层
只是把上面几句,合起来写成一句实现。

如果上面几句能明白,这句应该没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-17 17:33:19 | 显示全部楼层    本楼为最佳答案   
list(filter(lambda x : x % 2, range(10))) 相当于:
>>> func = lambda x: x % 2    # 这是一个判断奇偶数的函数,奇数返回 1,偶数返回 0
>>> result = []
>>> for i in range(10):
        if func(i):    # 如果 func(i) 为 1(True),也就是当 i 为奇数的时候,将 i 添加进 result 列表中
                result.append(i)

                
>>> result
[1, 3, 5, 7, 9]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 14:47:00 | 显示全部楼层
算了算了,给你一句一句注释的讲吧
#使用lambda做一个匿名函数,传入参数x,奇数返回1,偶数返回0,放在一个叫fn的变量里面
fn = lambda x: x % 2
#  filter把range(10)里的数一个一个进行过滤,传入参数,然后函数判断是否为奇数或者偶数,如果是奇数,也就是1也就是true也就是真(下一行注释)
# 那这个数也就是奇数就不会被过滤掉,而偶数0也就是false也就是假,就会被过滤掉,然后把所有没被过滤掉的弄成一个变量,最后打印输出
result = list(filter(fn, range(10)))
print(result)
# 其实这段讲解直接用这段代码就可以输出:print(list(filter(lambda x: x % 2, range(10))))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 14:48:13 | 显示全部楼层
哎呀,现在懂了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-22 22:14:34 | 显示全部楼层
陈尚涵 发表于 2020-7-18 14:48
哎呀,现在懂了吧

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 14:45:49 | 显示全部楼层
filter(function, iterable)
   function -- 判断函数。
   Iterable -- 可迭代对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 17:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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