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

a2warik

我在Peter Wentworth的“如何像计算机科学家一样思考:学习Python 3,第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

尽管可以产生正确的结果,但我无法理解标志的要求。

马0

这是您的功能的巧妙解决方案:

def maximum_in_list(L):
    '''Finds the maximum value from L which is a List_of_List'''
    item = -float('inf')
    for i in L:
        if isinstance(i, list):
            i = maximum_in_list(i)  # see remark
        item = max(item, i)
    return item

备注:

wheni是a时,list您可以list递归地将其重新分配到该最大值,这样您就不必在后面使用太多if语句。


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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在列表列表中找到最大值

Python在列表列表中找到最大值

从元素列表中找到最大值/最小值

如何从整数列表中找到最大值

如何使用 LINQ 在列表中找到最大值?

在python列表中找到最大值和索引?

在Python中的元组列表中找到最大值

在列表中找到最大值及其索引的Pythonic方法?

Prolog,从setOf列表中找到最大值

如何在 Python 中找到列表的最大值?

如何在列表中找到数组的最大值?

如何在 Python 的列表中找到最大值的索引?

如何在列表列表(嵌套列表包含字符串和数字)中找到具有最大值的列表?

如何在包含列表作为值的列表中找到最大值?

从列表项中找到最大值后如何获取二维列表的索引

在列表中找到子列表项最大值的最佳方法

如何从包含整数、元组、列表的不均匀列表中找到最大值

Python中列表列表的最大值

Python:如何在前10个值的列表中找到最大值?

如何在列表中找到所有局部最大值和最小值

如何在Python列表中找到最小值或最大值

如何在十进制列表中找到最小值和最大值?

从文件创建列表并找到最大值

需要代码在测试形成的矩阵中找到最大值

如何在R中的列表中找到最大值的位置?

如何在存储在数据框中的多个列表中找到最大值?

如何在Java中的列表中找到所有最大值?

在忽略无限值的同时,在numpy列表中找到最大值

如何在Perl 6中的列表中找到最大值的索引?