lfc990426 发表于 2021-10-22 21:19:09

求助关于filter中的return

def odd(x):
        return x%2

>>> temp = range(10)
>>> show = filter(odd,temp)
>>> list(show)


想问一下这里的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)

另外一种写法:
static/image/hrline/line3.pngdef odd(x):
    return x%2

temp = range(10)
show = list()

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

print(show)

kogawananari 发表于 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)
页: [1]
查看完整版本: 求助关于filter中的return