【问题标题】:Index of the highest sum() of sublists子列表最高 sum() 的索引
【发布时间】:2021-06-07 12:20:54
【问题描述】:

给定n 子列表的有限列表:

my_list = [[2, 9999], [318, 9999], [990, 9999], [9, 9999], [7767, 9999]]

我想要一个单行简洁的过程,它返回具有最高 sum() 的子列表的索引。

如果事件中 2 个或多个子列表的 sum() 相等,则返回第一个。

我的代码:

for ksu in key_set_unique:
   print(sum(ksu))

【问题讨论】:

    标签: python list for-loop sum


    【解决方案1】:

    您可以使用maxsum 作为键

    index = my_list.index(max(my_list, key=sum))
    

    【讨论】:

    • 干杯,这更简洁
    【解决方案2】:
    my_list = [[2, 9999], [318, 9999], [990, 9999], [9, 9999], [7767, 9999]]
    
    temp = []
    
    for sub_list in my_list:
        x = sum(sub_list)
        temp.append(x)
    
    ind_value = max(temp)
    
    print(temp.index(ind_value))
    

    我运行了一个 for 循环来获取存储在变量 my_list 中的继承列表的总和。该总和存储在名为 temp 的新列表中。

    现在我得到了存储在 temp 中的最大值索引,因为索引位置将保持不变,因此我可以获得具有最大总和值的继承列表。 (my_list[0] = temp[0])

    【讨论】:

      【解决方案3】:

      既然您明确要求使用单线,这里是:

      >>> list(map(sum, my_list)).index(max(map(sum, my_list)))
      4
      

      这一行使用map 函数创建一个总和列表,并使用index 在所述列表中找到一个值。搜索的值是前面提到的总和列表的最大值。

      请注意,这会计算两次my_list 元素的总和,这不是必需的。没有一行要求的解决方案:

      >>> sum_list = list(map(sum, my_list))
      >>> sum_list.index(max(sum_list))
      4
      

      【讨论】:

        【解决方案4】:

        # 元素索引

        element, index = max([(sum(item), i) for i, item in enumerate(my_list)])
        print(element, index)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-18
          • 2013-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多