假如filter函数的第一个参数是A,A又带一个参数是什么意思!!
Topic source举个栗子
l=range(10)
def f(n):
return lambda x:x%n==0
l_a=list(filter(f,l)) #自己除以自己肯定是整除,没有筛选
l_b=list(filter(f(2),l)) #筛选出偶数
>>> l_a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l_b
[0, 2, 4, 6, 8]
这里的_not_divisible(n)的返回值其实还是个函数。 你继续看到返回函数和匿名函数那应该就理解了。
话说楼上那个代码我有点不太理解了,filter(f,l)最后出来判断依据应该是个函数。结果我试了试 if a_function_pointer: print("Hi") 最后居然还真打印出来了
我是这样理解的, _not_divisible(n):这个函数返回的是n这个数是不是素数, it = filter(_not_divisible(n), it)把每次it里面的数带入这个函数进行筛选,筛除当前n的整数倍,跟上面讲的算法是一致的
- 1
kds0714
廖大神的这行实例看不懂啊!!!谁来解答一下, “_not_divisible(n)”带个一个参数n是什么意思??
当然,使用第一行计算结果是对的,第二行计算结果是错的 it =filter(_not_divisible(n), it) # 构造新序列 it =filter(_not_divisible, it) # 构造新序列