如何在Python嵌套列表中简便查找最小值?
在Python嵌套列表中查找最小值的简洁实现方法
嘿,这个需求很常见,我给你分享几个简单高效的实现方式,针对你给出的两层嵌套列表场景完全适用:
方法1:生成器表达式配合min()函数
这是最简洁直观的写法,一行代码就能搞定:
ls = [[2,3,5],[8,1,10]] min_val = min(num for sublist in ls for num in sublist) print(min_val) # 输出:1
原理很简单:生成器表达式会遍历外层列表的每个子列表,再逐个取出子列表里的元素,直接把所有元素的迭代器传给min()函数,不需要额外创建完整的扁平列表,内存效率很高。
方法2:用itertools.chain展平列表
如果你喜欢用标准库工具,itertools.chain是个不错的选择:
from itertools import chain ls = [[2,3,5],[8,1,10]] min_val = min(chain.from_iterable(ls)) print(min_val) # 输出:1
chain.from_iterable()会把嵌套的子列表逐个“展开”成一个连续的迭代器,min()函数直接处理这个迭代器就能得到全局最小值,和生成器的效率差不多,代码也很简洁。
方法3:手动遍历(适合理解逻辑)
如果想自己实现遍历逻辑,也可以这么写,虽然代码长一点,但逻辑清晰,适合初学者理解:
ls = [[2,3,5],[8,1,10]] min_val = float('inf') # 初始化为无穷大,确保第一个子列表的最小值能替换它 for sublist in ls: sub_min = min(sublist) if sub_min < min_val: min_val = sub_min print(min_val) # 输出:1
这里先把全局最小值初始成无穷大,然后逐个计算每个子列表的最小值,再和当前全局最小值比较更新,最终得到结果。
小提示
如果你的嵌套列表有更深的层级(比如三层甚至更多),上面的方法就不适用了,这时候需要写递归函数来遍历所有元素,但针对你给出的两层嵌套场景,上面的三个方法完全足够啦!
内容的提问来源于stack exchange,提问作者lfvv
相关产品推荐
相关产品推荐

