gpt4 book ai didi

python - 需要在列表列表中找到最大值

转载 作者:行者123 更新时间:2023-11-28 21:36:44 25 4
gpt4 key购买 nike

我在 Peter Wentworth 的《如何像计算机科学家一样思考:使用 Python 3 学习,第三版》中找到了这个问题。我也在下面添加了他们的解决方案。

我的简单递归函数产生错误的输出

def maximum_in_list(L):
'''Finds the maximum value from L which is a List_of_List'''
item=0
for i in L:
if type(i)==list:
item=maximum_in_list(i)
elif i>item:
item=i
return item

print(maximum_in_list([9,18,99,7,4,21,[3,5,[27,57,92],7,76],32,4]))
print(maximum_in_list([2, 9, [1, 13], 8, 6]))
print(maximum_in_list([2, [[100, 7], 90], [1, 13], 8, 6])) #Here the problem occurs
print(maximum_in_list([[[13, 7], 90], 2, [1, 100], 8, 6]))

图书代码生成正确的代码,但为什么需要一个标志?

def r_max(nxs):
largest=None
first_time=True
for e in nxs:
if type(e)=type([]):
val=r_max(e)
else:
val=e
if first_time or val>largest:
largest=val
first_time=False
return largest

尽管它产生了正确的结果,但我无法理解这里标志的要求。

最佳答案

你的递归方法有问题。简单的修复是:

item = max(item, maximum_in_list(i))

更新后的代码如下所示:

def maximum_in_list(L):
'''Finds the maximum value from L which is a List_of_List'''
item=0
for i in L:
if type(i)==list:
item=max(item, maximum_in_list(i))
elif i>item:
item=i
return item

print(maximum_in_list([9,18,99,7,4,21,[3,5,[27,57,92],7,76],32,4]))
print(maximum_in_list([2, 9, [1, 13], 8, 6]))
print(maximum_in_list([2, [[100, 7], 90], [1, 13], 8, 6])) #Here the problem occurs
print(maximum_in_list([[[13, 7], 90], 2, [1, 100], 8, 6]))

第一次标志用于防止将 None 值与整数进行比较。如果您在没有first_time 检查的情况下进行比较,则会导致类型错误。

关于python - 需要在列表列表中找到最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50606302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com