Discuss / Python / 假如filter函数的第一个参数是A,A又带一个参数是什么意思!!

假如filter函数的第一个参数是A,A又带一个参数是什么意思!!

Topic source

kds0714

#1 Created at ... [Delete] [Delete and Lock User]

廖大神的这行实例看不懂啊!!!谁来解答一下, “_not_divisible(n)”带个一个参数n是什么意思??

当然,使用第一行计算结果是对的,第二行计算结果是错的 it =filter(_not_divisible(n), it) # 构造新序列 it =filter(_not_divisible, it) # 构造新序列

举个栗子

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]

reform_93

#3 Created at ... [Delete] [Delete and Lock User]

这里的_not_divisible(n)的返回值其实还是个函数。 你继续看到返回函数和匿名函数那应该就理解了。

话说楼上那个代码我有点不太理解了,filter(f,l)最后出来判断依据应该是个函数。结果我试了试 if a_function_pointer: print("Hi") 最后居然还真打印出来了

如果筛选函数接受一个变量,它也返回一个接受一个变量的函数,那么在没有指定必须参数的情况下,接受的变量依次都是filter中序列的值。我是这样理解滴。。。。

啊啊_2004

#5 Created at ... [Delete] [Delete and Lock User]

廖大神返回了一个函数,让这个函数去接收值

啊啊_2004

#6 Created at ... [Delete] [Delete and Lock User]

还有就是我为什么交不了作业,痛苦

kds0714

#7 Created at ... [Delete] [Delete and Lock User]

依旧不明白,我知道_not_divisible(n)返回的是一个函数,返回的函数按理不是继续作用于it这个生成器吗?但我在断点调试过程中,发现流程很乱!!大家尝试一下,实在搞不清!

不带参数表示使用这个参数,带(n)表示使用这个函数return的那个函数

NeptuneAR

#9 Created at ... [Delete] [Delete and Lock User]

我是这样理解的, _not_divisible(n):这个函数返回的是n这个数是不是素数, it = filter(_not_divisible(n), it)把每次it里面的数带入这个函数进行筛选,筛除当前n的整数倍,跟上面讲的算法是一致的


  • 1

Reply