为什么我收到值错误?

Ori*_*Ori 3 python

l=['Python', 3, 2, 4, 5, 'version']
l=filter(lambda x:type(x)==int,l)
print(list(l))
print(max(l))
Run Code Online (Sandbox Code Playgroud)

收到此错误,但我不知道为什么.. ValueError: max() arg 是一个空序列

如果我不打印 list(l) 它将起作用..

l=['Python', 3, 2, 4, 5, 'version']
l=filter(lambda x:type(x)==int,l)
print(max(l))
Run Code Online (Sandbox Code Playgroud)

输出:5

打印过滤器对象的列表后它不起作用,我不知道你为什么能帮我?任何修复?

kwk*_*wkt 6

filter返回一个迭代器。调用后list(l),迭代器耗尽,因此您无法从中提取更多值。

你可以试试这个,看看:

l = ['Python', 3, 2, 4, 5, 'version']
l = filter(lambda x: type(x) == int, l)
print(list(l))
print(list(l))
Run Code Online (Sandbox Code Playgroud)

第二个打印语句给出了空列表:

[3, 2, 4, 5]
[]
Run Code Online (Sandbox Code Playgroud)

这会起作用:

[3, 2, 4, 5]
[]
Run Code Online (Sandbox Code Playgroud)