我想在嵌套列表中找到最大值的索引:
例如嵌套列表是:
[[[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)
我知道如何找到嵌套列表的全局最大值,但不确定如何找到每个列表的最大值。
答案 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
函数中,它返回一对 (,ii
。
下一行 line
由 max_val
函数分配,该函数返回可迭代 max
中的最大值。
line
变量由 index
列表实例的方法 list.index
设置,该方法返回调用该方法的列表中给定值的第一个索引。
最后,我通过使用字符串并调用 line
方法来填充 format
占位符,以您想要的格式打印输出。有关格式字符串的更多信息,请参见 here。此外,{}
函数在每次打印后默认为换行符;因此,我没有在此处引入字符串构建,而是将结束行更改为空格,并在 for 循环后添加了额外的打印内容,以便为您提供换行符。
这里有很多,我可以看出您可能会在这个问题上迷失方向。我将链接到我在这里使用的每个内置命令,以便您可以了解更多关于 python 的“包含电池”的函数和方法。
Python built-in data structures
快乐黑客。