import math
def is_sqr(x):
v=int(math.sqrt(x))
return x==v*v
print filter(is_sqr, range(1, 101))
...[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#####################################################
import math
def is_sqr(x):
v=int(math.sqrt(x))
return x==v*v
print filter(is_sqr, range(1, 101))
...[]
这是利用filter()过滤出1~100中平方根是整数的函数,但是其中的语句 return x==v*v 是什么意思呢,是不是返回检验的意思呢。当注释掉该语句时,只是返回一个空list,这能说明什么呢?
注意filter的第一个参数是一个函数is_sqr,第二个参数是你给定的list。
filter的操作就是:对给定list里的每一个项y执行is_sqr(y)函数,如果这个函数返回true,则将这个y添加到返回的列表里,如果返回false,则这个y不被添加到列表里。
这个函数is_sqr的作用就是判断其参数x是不是能够开平方得一个整数。
我把filter函数的实现写一下伪代码:
没用过Python,写的可能不合语法规范,不过大致意思能看出来吧。就酱紫。