def max_even_list(list): if len(list) == 1: if list[0] % 2 == 0: return list[0] else: if list[0] % 2 == 0: return max(list[0], max_even_list(list[1:])) else: return max_even_list(list[1:])
我收到错误消息:TypeError:'>' ' NoneType'的实例之间不支持和' int'
任何人都可以帮我修复此代码,该代码返回列表中最大的偶数
答案 0 :(得分:2)
当len(list)
为1
但list[0] % 2
不为0时,您不会返回任何内容。因此,如果列表的最后一个元素是奇数,则此代码将不起作用。
如果len(list)
为1
但list[0] % 2
不为0,则可以返回-infinity,如:
def max_even_list(list):
if len(list) == 1:
if list[0] % 2 == 0:
return list[0]
else:
return float("-inf")
else:
if list[0] % 2 == 0:
return max(list[0], max_even_list(list[1:]))
else:
return max_even_list(list[1:])
答案 1 :(得分:1)
FWIW,这是获得最大偶数的另一种方式。
lst = [1, 2, 2 ,6, 7, 7, 8, 10, 11]
max(filter(lambda x: x%2 == 0, lst))
# 10
参考:Python max()
答案 2 :(得分:1)
您只需要关注3个案例:
-infinity
xs[0]
)为偶数时,返回列表其余部分的max
xs[0]
和max_even
{{1} }})xs[1:]
(max_even
)这可以通过微不足道的工作编译成一个python程序
xs[1:]