如何在Python中使用filter函数 33

1 投票
3 回答
5586 浏览
提问于 2025-04-17 18:34

我现在开始学习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)))

撰写回答