【问题标题】:Find max values in a nested list in Python在 Python 的嵌套列表中查找最大值
【发布时间】:2021-03-26 20:26:09
【问题描述】:

我想在嵌套列表中查找最大值的索引:

例如嵌套列表是:

[[15 16 18 19 12 11] [13 19 23 21 16 12] [12 15 17 19 20 10] [10 14 16 13 9 6]]

最大值应为 19、23、20、16。

我也想在元组格式中找到他们的索引,例如

19: (0,3) 23:(1,2) 20: (2,4)

我知道如何找到嵌套列表的全局最大值,但不确定如何找到每个列表的最大值。

【问题讨论】:

  • 欢迎来到 Stack Overflow。到目前为止,您尝试过什么?

标签: python list


【解决方案1】:

你只需要一个for 循环来解决这个问题。

我会给你一个真实的答案,但你会想要更多地研究这个以了解发生了什么:

for ii,line in enumerate(data):
    max_val = max(line)
    index   = line.index(max_val)
    print("{}:({},{})".format(max_val,ii,index),end=' ')
print()

python 中的for 循环将为您提供可迭代的每个元素。在这种情况下,您有一个列表列表,因此每个 line 都将是一个列表。既然你想要那些编号,我将data 放在enumerate 函数中,该函数返回一对(,for 循环将其解包到变量ii 和line 中。 下一行max_val 由max 函数分配,该函数返回可迭代line 中的最大值。 index 变量由line 列表实例的list.index 方法设置,该方法返回调用该方法的列表中给定值的第一个索引。 最后,我通过使用字符串并调用format 方法来填充{} 占位符,以您想要的格式打印输出。有关格式字符串的更多信息,请参见here。此外,print 函数默认在每次打印后换行;因此,我没有在这里介绍字符串构建,而是将结束行更改为一个空格,并在 for 循环之后添加了一个额外的打印来为您提供一个新行。

这里有很多内容,我可以看到您可能会在这个问题上迷失方向。我将链接到我在此处使用的每个内置命令,以便您可以了解有关 python 的“包含电池”功能和方法的更多信息。

for-loop flow control

Built-in functions:

Python built-in data structures

黑客愉快。

【讨论】:

    【解决方案2】:

    为了解决您的问题,我可能会使用字典理解(实际上与列表理解的工作方式相同)

    {max(nested_list): (i, nested_list.index(max(nested_list))) for i, nested_list in enumerate(your_list_of_list)}
    

    使用enumerate python 内置函数可以获取嵌套列表的索引 (i) 及其值 (nested_list)。

    从那里,您可以使用max 函数轻松找到每个嵌套列表的最大值。

    最后,index 方法允许您从嵌套列表中找到最大值的第一次出现。

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 2021-01-13
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2021-02-24
      • 1970-01-01
      相关资源
      最近更新 更多