【问题标题】:Python: Get max value from a multi-dimensional listPython:从多维列表中获取最大值
【发布时间】:2020-12-24 12:44:02
【问题描述】:

我想得到这个列表的最大值,但比排序快。

[[1, 3], [2, 3], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 1], [4, 2], [4, 3], [5, 2], [5, 3]]

我以前用这样的键排序

bb = int(sorted(ab, key = lambda x:(int(x[1])))[-1][1])

对于这个列表的结果

[[1, 1], [2, 1], [2, 2], [3, 2]]

我可以得到 3 和 2,这是每行的最大值 但是我花了太多时间,所以我怎样才能加快速度呢? 我希望能够设置诸如排序方法之类的键,请帮助

【问题讨论】:

    标签: python list sorting multidimensional-array max


    【解决方案1】:

    您不需要对列表进行排序(这会添加一堆冗余操作)。您可以取而代之的是内部列表的最大值:

    lst = [[1, 3], [2, 3], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 1], [4, 2], [4, 3], [5, 2], [5, 3]]
    result = max(max(l) for l in lst)
    

    【讨论】:

    • 不等同于原始版本(尽管可能需要)。
    • 对我的帖子的评论已确认,将仔细查看。感谢您的提醒!
    • 我的意思是,我想通过 lst[n][0] 之类的行获取最大值
    【解决方案2】:

    您可以尝试使用 numpy,它应该根据您的列表返回 5

    import numpy as np
    
    np.max(ab)
    

    【讨论】:

    • 不错的简单解决方案。您是否针对@Mureinik 方法测试过时序基准? (包括numpy的导入)
    • 我正要发布我的计时赛结果,但我看到你已经打败了我:D
    猜你喜欢
    • 2017-11-03
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    相关资源
    最近更新 更多