Python如何获取列表中大于200的元素的最小值
解答
可以实现,你预想的min(L, Key>200)写法不符合Python内置min()的参数规则:key参数只接收用来计算元素比较权重的单参数函数,不支持直接传入判断条件做过滤。以下是两种常用的实现方案:
- 过滤后取最小值
这是可读性最高的常规写法,先筛掉所有不满足“大于200”条件的元素,再传入min()计算即可:
运行得到的L = [383, 590, 912, 618, 203, 982, 364, 131, 343, 202] min_val = min(num for num in L if num > 200)min_val就是你预期的202。这里用生成器表达式做过滤,不会额外生成临时列表,内存效率比列表推导更高。注意如果列表中没有任何大于200的元素,这种写法会抛出ValueError,可以按需做异常捕获。 - 借助
key参数单遍历计算
如果希望只遍历一次列表完成计算,可以给不符合条件的元素设置无穷大的比较权重,让这类元素永远不会被选为最小值:
这种写法在列表没有符合条件的元素时,会直接返回列表本身的最小值,不会抛出异常,可以根据实际业务场景选择使用。min_val = min(L, key=lambda x: x if x > 200 else float('inf'))
内容的提问来源于stack exchange,提问作者Dami Devil
相关产品推荐
相关产品推荐

