is_odd无效
Topic source要改成这样才行:
def is_odd(n): return lambda n:n%2==1 for n in range(1,20):
L = list(filter(is_odd(n), range(1, 20)))
这样写相当于反回了一个函数,用了闭包。
def is_odd(n): return lambda n:n%2==1
L1 = list(filter(is_odd(0), range(1, 20))) print(L1)
L2 = list(filter(is_odd(1), range(1, 20))) print(L2)
你调用函数就可以了
def is_odd(): return lambda x:x%2==1
L1 = list(filter(is_odd(), range(1, 20))) print(L1)
L2 = list(filter(is_odd(), range(1, 20))) print(L2)
改写一下发现也可用,所以推断,之前def is_odd(n): return lambda n:n%2==1这个写法的位置参数‘n’,和返回的匿名参数中的‘n’不是一会事, 不知道这么理解对不对
- 1
- 2
机器人先生是也
def is_odd(n): return lambda n:n%2==1
L = list(filter(is_odd, range(1, 20)))
输出是错误的 谁能说一下吗