【问题标题】:How to print the highest number in lists that are inside another list [duplicate]如何打印另一个列表中的列表中的最高数字[重复]
【发布时间】:2021-12-27 02:37:03
【问题描述】:

我想打印我列表中的最大数字(1231 此处)。 我在这里尝试过这样做(发布在下面),但这不起作用。它只显示列表中每个元素的最高总数,这显然不是我想要的。

list = [ [1,3,251], [2], [1231,52,22] ]

for i in range(len(list)):
    for j in range(len(list[i])):
        print(max(list))

打印:

[1231, 52, 22]
[1231, 52, 22]
[1231, 52, 22]
[1231, 52, 22]
[1231, 52, 22]
[1231, 52, 22]
[1231, 52, 22]

【问题讨论】:

    标签: python list


    【解决方案1】:
    list = [ [1,3,251], [2], [1231,52,22] ]
    new_list = []
    for i in list:
        new_list.append(max(i))
    print(max(new_list))
    



    这会做。这将只打印整个列表中最大的数字。

    【讨论】:

    • 对于未来的读者:这确实有效,但如果列表很大或执行多次,这种方法很慢并且使用大量内存,因为列表是在显式循环中复制的。最好使用利用迭代器的理解或内置函数(如下面的回答所示)。
    • @labroid 该解决方案是次优的,但公平地说,列表不会在循环中复制,只有每个列表中的最大值被附加到新列表中。
    • 啊,是的!你是对的 - 它只复制,列表的一部分。对于大型列表或密集循环仍然需要考虑。感谢您的澄清。
    【解决方案2】:

    类似这样的:

    xss = [ [1,3,251], [2], [1231,52,22] ]
    result = max(max(xs) for xs in xss)
    print(result)
    

    【讨论】:

      【解决方案3】:

      您没有在代码中的任何地方使用ij。既然你有一个嵌套列表,你应该嵌套 max 调用:

      >>> my_list = [[1, 3, 251], [2], [1231, 52, 22]]
      >>> max(max(sub_list) for sub_list in my_list)
      1231
      

      或者,您可以使用嵌套列表推导来展平列表,然后进行单个 max 调用:

      >>> max(i for sub_list in my_list for i in sub_list)
      1231
      

      【讨论】:

        【解决方案4】:

        在 itertools 中有非常方便的函数用于解除嵌套。例如:

        from itertools import chain
        
        list = [ [1,3,251], [2], [1231,52,22] ]
        
        print(max(chain(*list)))
        

        所以这是一个单行解决方案(加上一个导入)

        【讨论】:

          【解决方案5】:
          >>> list = [ [1,3,251], [2], [1231,52,22] ]
          >>> max(max(list))
          1231
          

          它从第一个列表中获取最大值,然后输出该列表中的最大值。

          【讨论】:

          • max(max(list)) 给出了字典顺序最大的列表中的最大元素;不一定是最大的整体元素。例如。如果列表是[[0,3], [1,2]]
          • 如果最后一个子列表是 [22, 52, 1231]
          猜你喜欢
          • 2012-08-24
          • 1970-01-01
          • 1970-01-01
          • 2014-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-07
          相关资源
          最近更新 更多