如何仅用纯Python比较嵌套列表各对应位置元素并求最小值
实现方案
核心逻辑是先提取所有子列表同一索引位置的元素组,逐组计算最小值后,按要求包装为单元素子列表,填充到目标结构里即可。
示例输入定义
# 原始数据源 source_nested_list = [[10, 2, 4.8, 90], [7, 1, 41, 5], [3, 11, 20, 2]] # 预定义的空目标列表 target_list = [[], [], [], []]
方法1:直接生成符合要求的结果
用Python内置的zip搭配解包操作,就能快速按列(同索引)聚合元素,写法最简洁:
result = [[min(column_values)] for column_values in zip(*source_nested_list)]
代码逻辑说明:
*source_nested_list会把数据源里的3个子列表拆分为独立参数传入zipzip会依次遍历所有子列表,按索引位置把元素拼成元组,对应示例会得到4组值:(10,7,3)、(2,1,11)、(4.8,41,20)、(90,5,2)- 对每组值求最小值后,包装为单元素列表,最终输出和预期完全一致:
[[3], [1], [4.8], [2]]
方法2:向已有的空目标列表填充值
如果你不需要新建列表,而是要把值写入提前定义好的空嵌套列表,可以用循环按索引填充:
for index, column_values in enumerate(zip(*source_nested_list)): target_list[index].append(min(column_values))
执行完成后,target_list的值就是你需要的结果。
注意:上述写法默认所有子列表长度一致,和当前场景匹配。如果存在子列表长度不一致的情况,
zip会自动按最短的子列表长度截断计算;如果需要按最长子列表计算、缺失位置补默认值,可以替换为itertools.zip_longest实现。
内容的提问来源于stack exchange,提问作者PythonNoob
相关产品推荐
相关产品推荐

