【问题标题】:Maximum sum of sub list in a list of lists列表列表中子列表的最大总和
【发布时间】:2019-11-14 17:30:10
【问题描述】:

在 Python 中迈出第一步。 我有一个列表列表,我正在尝试返回所有子列表中总和最大的 子列表。 现在我只有最大和本身。 例如:此代码返回 18,但我需要返回 [3,3,3,3,3,3]

有什么方向吗? 谢谢

def find_biggest(lst):
    inner_list_sum = []
    for i in range(len(lst)):
        inner_list_sum.append(sum(lst[i]))    # list of elements sums
    return max(inner_list_sum)                # I actually need the element itself...not the max sum

print(find_biggest([[1,2,3,4], [1,2,3,3], [1,1], [3,3,3,3,3,3]]))

【问题讨论】:

    标签: python python-3.x python-requests


    【解决方案1】:

    maxkey=sum 一起使用

    例如:

    data = [[1,2,3,4], [1,2,3,3], [1,1], [3,3,3,3,3,3]]
    print(max(data, key=sum))
    

    输出:

    [3, 3, 3, 3, 3, 3]
    

    【讨论】:

    • 关键解释:maxkey 参数告诉它如何找到它正在最大化的值(而不是直接使用元素的值),在这种情况下通过应用 @ 987654327@函数。
    • 哇,这太好了,我永远不会这样做
    • 我试过这个但它返回 None 除了正确的答案。例如:当输入此代码作为答案时,我得到一个错误: Input Expected Got test = [[1, 2, 3], [10, -2], [1, 1, 1, 1]] print(find_biggest(测试)) 测试 = [[1, 2, 3], [10, -2], [1, 1, 1, 1]] 打印(find_biggest(test)) [10, -2] [10, -2]无
    【解决方案2】:

    好的 因为我不允许使用 (max(data, key=sum))。 我做了这个不是很优雅的代码,但它被接受了一个正确的答案

    def find_biggest(lst):
        inner_list_sum = []
        for i in range(len(lst)):
            inner_list_sum.append(sum(lst[i]))    # list of elements sums
            max_element=max(inner_list_sum)
            seq_index= inner_lis
    

    【讨论】:

      【解决方案3】:
      import functools
      
      def find_biggest(lst):
          return functools.reduce(lambda x, y : x if sum(x) > sum(y) else y, lst)
      
      

      这里,使用的lambda表达式是等价于求最大和的函数,lstiterable

      请注意:reduce 将直接作用于python2,您需要导入functools
      仅限python3

      Using functools.reduce

      【讨论】:

      • print(find_biggest([[1,2,3,4], [1,2,3,3], [1,1], [3,3,3,3,3,3]])) returns [3, 3, 3, 3, 3, 3]
      猜你喜欢
      • 2013-02-10
      • 2013-02-10
      • 2019-08-07
      • 2012-11-26
      • 1970-01-01
      • 2021-05-01
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多