为什么我收到值错误?
l=['Python', 3, 2, 4, 5, 'version']
l=filter(lambda x:type(x)==int,l)
print(list(l))
print(max(l))
收到此错误,但我不知道为什么.. ValueError: max() arg 是一个空序列
如果我不打印 list(l) 它将起作用..
l=['Python', 3, 2, 4, 5, 'version']
l=filter(lambda x:type(x)==int,l)
print(max(l))
输出:5
打印过滤器对象的列表后它不起作用,我不知道你为什么能帮我?任何修复?
回答
filter返回一个迭代器。调用后list(l),迭代器耗尽,因此您无法从中提取更多值。
你可以试试这个,看看:
l = ['Python', 3, 2, 4, 5, 'version']
l = filter(lambda x: type(x) == int, l)
print(list(l))
print(list(l))
第二个打印语句给出了空列表:
[3, 2, 4, 5]
[]
[3, 2, 4, 5]
[]
这会起作用: