为了账号安全,请及时绑定邮箱和手机立即绑定

2-6 python中的filter函数为什么代码这么写是对的?

理论上来说如下代码,返回的结果是几个0,为什么会输出正确的结果呢?我写的代码放在第二段

import math

def is_sqr(x):

    return math.sqrt(x)%1==0

print filter(is_sqr, range(1, 101))

第二段也是对的

import math

def is_sqr(x):

    if math.sqrt(x)%1==0:

           return  x

print filter(is_sqr, range(1, 101))


正在回答

2 回答

import math
def is_sqr(x):
    print math.sqrt(x)%1
    return math.sqrt(x)%1==0

print filter(is_sqr, range(1, 101))

0.0

0.414213562373

0.732050807569

0.0

0.2360679775

0.449489742783

0.645751311065

0.828427124746

0.0

0.162277660168

0.316624790355

0.464101615138

0.605551275464

0.741657386774

0.872983346207

0.0

0.123105625618

0.242640687119

0.358898943541

0.472135955

0.582575694956

0.690415759823

0.795831523313

0.898979485566

0.0

0.0990195135928

0.196152422707

0.291502622129

0.385164807135

0.477225575052

0.56776436283

0.656854249492

0.744562646538

0.830951894845

0.9160797831

0.0

...


0 回复 有任何疑惑可以回复我~

filter()在is_sqr()返回值为true时将数组中对应数值加入新数组,最后将这个新数组返回。第二段返回x,x非0都是true。

0 回复 有任何疑惑可以回复我~
#1

慕数据7329446 提问者

我理解的是return这个式子 math.sqrt(x)%1==0的结果0而不是x,第二段自己写的也是对的,并不是所有x非0都是true,只是想搞明白第一段为什么会是对的
2018-08-26 回复 有任何疑惑可以回复我~
#2

精慕门0499735 回复 慕数据7329446 提问者

math.sqrt(x)%1==0的结果不是0,也不是x,而是true和false
2018-09-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

2-6 python中的filter函数为什么代码这么写是对的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信