超级抓狂了,filter用函数和直接用lambda计算结果不一样
第一个计算能被2整除的,结果竟然不包含0,不知道为啥, 抓狂几天了,硬是没有找出原因。def ceshi(x):
if x%2==0:
return x
list001 = tuple(range(10)) #生成一个数据列表
print(list001)
a = filter(ceshi,(list001))
print(tuple(a))
#这个结果打印出来(2, 4, 6, 8)我不知道为啥没有0 我的天啊,我直接把list001 写成了(0,) 打印出来直接是空的。
new_list = filter(lambda x: x % 2 == 0, list001)
print(list(new_list))
#这个结果打印出来是 这个是正常的。 1 filter()函数 接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
你的0作为参数传入ceshi()返回的是0,是False。建议把ceshi()函数return x改为return True即可
2lambda x:x%2==0这个匿名函数的意思是,x%2为0时候整个函数返回True 不为零时整个函数返回False def ceshi(x):
if x%2==0:
return True
list001 = tuple(range(10)) #生成一个数据列表
print(list001)
a = filter(ceshi,(list001))
print(tuple(a)) 非常感谢 痒痒痒童鞋的帮助,果然是这样的。
页:
[1]