鱼C论坛

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

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

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

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

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

x
  1. def odd(x):
  2.         return x%2

  3. >>> temp = range(10)
  4. >>> show = filter(odd,temp)
  5. >>> list(show)
  6. [1, 3, 5, 7, 9]
复制代码


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

  3. temp = range(10)
  4. show = filter(odd,temp) # filter 顾名思义过滤/筛选,odd 为函数,temp 为参数,运行 odd 筛选所有参数,如果真 True(除了 0,所有数字都是真),则输出值
  5. list(show)
  6. [1, 3, 5, 7, 9]
复制代码

另外一种写法:

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

  3. temp = range(10)
  4. show = list()

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

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

使用道具 举报

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

  3. temp = range(10)
  4. show = filter(odd,temp) # filter 顾名思义过滤/筛选,odd 为函数,temp 为参数,运行 odd 筛选所有参数,如果真 True(除了 0,所有数字都是真),则输出值
  5. list(show)
  6. [1, 3, 5, 7, 9]
复制代码

另外一种写法:

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

  3. temp = range(10)
  4. show = list()

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

  8. 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, 2024-4-25 17:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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