ist(filter(lambda x : x % 2, range(10)))看不懂
def add(x):return x % 2
>>> temp = range(10)
>>> show = filter(add,temp)
>>> list(show)
下面这一块不懂求各位大佬给我讲讲!!!
>>> list(filter(lambda x : x % 2, range(10)))
这是一个简单的fliter实现(yield不用管,你后面会学到)
def filter(func, seq):
if func == None:
for each in seq:
if each:
yield each
else:
for each in seq:
if func(each):
yield each 只是把上面几句,合起来写成一句实现。
如果上面几句能明白,这句应该没问题 list(filter(lambda x : x % 2, range(10))) 相当于:
>>> func = lambda x: x % 2 # 这是一个判断奇偶数的函数,奇数返回 1,偶数返回 0
>>> result = []
>>> for i in range(10):
if func(i): # 如果 func(i) 为 1(True),也就是当 i 为奇数的时候,将 i 添加进 result 列表中
result.append(i)
>>> result
算了算了,给你一句一句注释的讲吧{:10_257:}{:10_257:}
#使用lambda做一个匿名函数,传入参数x,奇数返回1,偶数返回0,放在一个叫fn的变量里面
fn = lambda x: x % 2
#filter把range(10)里的数一个一个进行过滤,传入参数,然后函数判断是否为奇数或者偶数,如果是奇数,也就是1也就是true也就是真(下一行注释)
# 那这个数也就是奇数就不会被过滤掉,而偶数0也就是false也就是假,就会被过滤掉,然后把所有没被过滤掉的弄成一个变量,最后打印输出
result = list(filter(fn, range(10)))
print(result)
# 其实这段讲解直接用这段代码就可以输出:print(list(filter(lambda x: x % 2, range(10))))
哎呀,现在懂了吧 陈尚涵 发表于 2020-7-18 14:48
哎呀,现在懂了吧
感谢 filter(function, iterable)
function -- 判断函数。
Iterable -- 可迭代对象
页:
[1]