鱼C论坛

 找回密码
 立即注册
查看: 2285|回复: 2

[已解决]求助关于filter中的return

[复制链接]
发表于 2021-10-22 21:19:09 | 显示全部楼层 |阅读模式

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

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

x
def odd(x):
        return x%2

>>> temp = range(10)
>>> show = filter(odd,temp)
>>> list(show)
[1, 3, 5, 7, 9]

想问一下这里的return x%2 返回后是不是让odd函数变为 0 和1 了吗? 为什么最后的show会出现13579
最佳答案
2021-10-22 21:24:07
本帖最后由 傻眼貓咪 于 2021-10-23 08:13 编辑
def odd(x):
        return x%2

temp = range(10)
show = filter(odd,temp) # filter 顾名思义过滤/筛选,odd 为函数,temp 为参数,运行 odd 筛选所有参数,如果真 True(除了 0,所有数字都是真),则输出值
list(show)
[1, 3, 5, 7, 9]
另外一种写法:

                               
登录/注册后可看大图
def odd(x):
    return x%2

temp = range(10)
show = list()

for i in temp:
    if odd(i): # filter 用法类似于 if 用法
        show.append(i)

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

使用道具 举报

发表于 2021-10-22 21:24:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 2021-10-23 08:13 编辑
def odd(x):
        return x%2

temp = range(10)
show = filter(odd,temp) # filter 顾名思义过滤/筛选,odd 为函数,temp 为参数,运行 odd 筛选所有参数,如果真 True(除了 0,所有数字都是真),则输出值
list(show)
[1, 3, 5, 7, 9]
另外一种写法:

                               
登录/注册后可看大图
def odd(x):
    return x%2

temp = range(10)
show = list()

for i in temp:
    if odd(i): # filter 用法类似于 if 用法
        show.append(i)

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

使用道具 举报

发表于 2021-10-22 22:16:29 | 显示全部楼层
本帖最后由 kogawananari 于 2021-10-22 22:18 编辑

show = filter(odd,temp)
等价于
show = (i for i in temp if odd(i))


如果需要odd的结果而不是过滤

则应该用  show = map(odd,temp)
届时 等价于
show = (odd(i) for i in temp)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-4 15:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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