因此,基本上,我必须编写一段代码,返回列表中对象的最大值。如果列表中有字符串,则代码必须删除该字符串,然后从列表中返回最大值。
这是我迄今为止尝试过的代码:
for i in lst:
if i != int:
if i != float:
filtered_lst = filter(lambda i: not (type(i) is str), lst)
if filtered_lst == []:
print(' ')
else:
return max(filtered_lst)
else:
return max(lst)
else:
return max(lst)
这在大多数情况下都有效,但是,如果输入是所有字符串(如max_args(['5','2'](,它会返回一个错误,特别是"max((包含一个空参数"。关于如何解决这个问题,有什么建议吗?谢谢
我认为你让这个问题变得比它必须的更复杂了,你可以检查空列表的情况,并相应地打印你想要的任何
lst = [1,2,3,"hello", 3, "world"]
fil_lst = [i for i in lst if not type(i) is str]
if len(fil_lst) == 0:
print("Could not find max")
else:
print(max(fil_lst))
下面的怎么样?jsut删除字符串并找到最大int
lst = ['99', 12, '1045', 18, 55]
lst1 = [x for x in lst if isinstance(x, int)]
print(lst1)
if lst1:
print(max(lst1))