如何在任意嵌套列表中获取各子列表的最大值?
提取嵌套列表中每个子列表的最大值
问题背景
我有一个多层嵌套的列表C11,需要获取每个最内层子列表中的最大值,并输出指定的嵌套格式。
原代码
C11 = [[[353.856161, 0.0, 0.0], [0.0, 0.0, 282.754301, 0.0]], [[0.0, 294.983702, 126.991664]]] for i in range(0,len(C11)): C2 = max(C11[i]) print(C2)
当前输出
[[353.856161, 0.0, 0.0], [0.0, 294.983702, 126.991664]]
期望输出
[[[353.856161],[282.754301]], [[294.983702]]]
解决方案
原代码的问题在于:直接对C11[i]调用max()时,Python会按列表元素逐个比较(而非提取数值最大值),且未遍历到最内层子列表。要实现需求,需逐层遍历嵌套列表,对每个最内层数值列表计算最大值,再包装成单元素列表,最后按原结构组合。
用嵌套列表推导式可简洁实现:
C11 = [[[353.856161, 0.0, 0.0], [0.0, 0.0, 282.754301, 0.0]], [[0.0, 294.983702, 126.991664]]] result = [[[max(sublist)] for sublist in mid_list] for mid_list in C11] print(result)
代码解释
- 最外层遍历
C11中的每个中层列表mid_list - 中层遍历
mid_list中的每个最内层数值列表sublist - 对每个
sublist计算最大值,并用[max(sublist)]包装成单元素列表 - 最终按原嵌套结构组合结果
执行后输出与期望一致:
[[[353.856161], [282.754301]], [[294.983702]]]
内容的提问来源于stack exchange,提问作者AEinstein
相关产品推荐
相关产品推荐

