在 Python 中的嵌套列表中查找最大值

时间:2021-03-26 20:26:09

标签: python list

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

例如嵌套列表是:

[[[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)

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

2 个答案:

答案 0 :(得分:0)

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

{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 方法允许您从嵌套列表中找到最大值的第一次出现。

答案 1 :(得分:0)

你只需要一个 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 循环将其解包到变量 {{1 }} 和 ii。 下一行 linemax_val 函数分配,该函数返回可迭代 max 中的最大值。 line 变量由 index 列表实例的方法 list.index 设置,该方法返回调用该方法的列表中给定值的第一个索引。 最后,我通过使用字符串并调用 line 方法来填充 format 占位符,以您想要的格式打印输出。有关格式字符串的更多信息,请参见 here。此外,{} 函数在每次打印后默认为换行符;因此,我没有在此处引入字符串构建,而是将结束行更改为空格,并在 for 循环后添加了额外的打印内容,以便为您提供换行符。

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

for-loop flow control

Built-in functions:

Python built-in data structures

快乐黑客。