如何在Python中使用filter函数 33
我现在开始学习Python,但在使用filter函数时遇到了问题。
如果我运行
list=list(range(10))
def f(x): return x % 2 != 0
print(((filter(f,list))))
我得到的结果是
filter object at 0x00000000028B4E10
Process finished with exit code 0
如果我把代码改成
list=list(range(10))
def f(x): return x % 2 != 0
print(list(filter(f,list)))
我得到的结果将是
Traceback (most recent call last):
File "C:/Users/Vo Quang Hoa/PycharmProjects/HelloWorld/Hello.py", line 6, in <module>
print(list(filter(f,list)))
TypeError: 'list' object is not callable
Process finished with exit code 1
发生了什么?我该如何得到列表1、3、5、7、9呢?谢谢你的帮助。
3 个回答
0
我希望这对你有帮助
ran=range(10)
def f(x): return x % 2 != 0
res = filter(f,ran)
for i in res:
print(i,end=' ')
3
你把 list
这个名字改了,给它赋了一个不同的值。这样做不好,因为你覆盖了 Python 内置的类型。把你的代码改成用其他名字来代替:
some_list = list(range(10))
def f(x): return x % 2 != 0
print(list(filter(f, some_list)))
这样一来,filter()
就能正常工作了。
2
你主要的问题是,你把你的 list
变量也叫做 list
。不要用和其他对象一样的名字!给你的列表起个不同的名字,或者使用像大驼峰命名法这样的命名规则。
Fred=list(range(10))
def f(x): return x % 2 != 0
print(list(filter(f,Fred)))