python-3.x 这个错误的原因是什么?2我正在使用过滤器功能来过滤列表中的奇数

dfty9e19  于 2022-12-30  发布在  Python
关注(0)|答案(3)|浏览(89)

我得到这个错误,我正在使用过滤器函数过滤列表中的奇数值

代码:

l1=[1,2,4,5,6,79,100,200,500]
finnal_list=list(filter(lambda x: (x%2!=0),l1))
print(finnal_list)

l1=[1,2,4,5,6,79,100,200,500]
finnal_list=list(filter(lambda x: (x%2!=0),l1))
print(finnal_list)
anauzrmj

anauzrmj1#

错误很清楚地表明在你先前的单元格中你已经分配了过滤器变量。使用内建变量名作为变量名是一个不好的习惯。比如

#old cells code 
filter = "some string"
#old cells code 

l1=[1,2,4,5,6,79,100,200,500]

finnal_list=list(filter(lambda x: (x%2!=0),l1))
print(finnal_list)

引发错误#

Error: TypeError: 'str' object is not callable

修复

如果不需要该变量,只需将其清除即可

#old cells code
filter = "some string"
#old cells code

l1=[1,2,4,5,6,79,100,200,500]  
del filter
finnal_list=list(filter(lambda x: (x%2!=0),l1))
print(finnal_list)

输出编号

[1, 5, 79]
l5tcr1uw

l5tcr1uw2#

只使用List解析会更简单

final_list = [x for x in l1 if x%2 != 0]
flvlnr44

flvlnr443#

就像其他人说的,你可以把过滤器声明为变量。我想这就是你想要的

li = [1,2,4,5,6,79,100,200,500]
 print(list(filter(lambda x: x if x%2!=0 else None,l1)))

需要注意的是,map、filter和reduce等都是python的函数元素,其中
1.Map通常用于迭代对象上的变换
1.用于筛选可迭代对象的筛选器
MAP和Filter都取可迭代的并且返回可迭代的,

  1. reduce takes iterable产生单个值,该值进一步被馈送到reduce函数。
    这些都是方便的函数,允许您在不使用循环的情况下遍历iterable。

相关问题