1

我现在开始学习python,但过滤功能有问题。

如果我跑

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 感谢您的帮助。

4

2 回答 2

3

您重命名list了 ,赋予它不同的值。不要那样做,你隐藏了内置类型。更改您的代码以使用不同的名称:

some_list = list(range(10))

def f(x): return x % 2 != 0

print(list(filter(f, some_list)))

然后filter()工作得很好。

于 2013-03-10T12:05:34.703 回答
2

您的主要问题是您调用了list变量 um, list。您不能使用与其他对象相同的名称!将您的列表称为其他名称,和/或使用大写驼峰式命名约定;

Fred=list(range(10))

def f(x): return x % 2 != 0

print(list(filter(f,Fred)))
于 2013-03-10T12:08:38.823 回答