You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在函数中处理四个输入数字,单行代码实现取两个最小值并执行计算

如何在函数中处理四个输入数字,单行代码实现取两个最小值并执行计算

嘿,我太懂你不想写一堆嵌套if-else的痛苦了,其实用Python的内置工具就能轻松实现你要的单行逻辑,完全不用复杂的分支判断。

给你几个简洁的实现方案,都是一行函数体就能搞定的:

方案1:用排序+切片(最直观)

这应该是最符合你需求的写法,逻辑清晰,一眼就能看懂:

def square(a, b, c, d):
    return [x * 2 for x in sorted([a, b, c, d])[:2]]

简单解释下:

  • 先把四个参数放进列表[a, b, c, d]
  • sorted()会自动把列表从小到大排序
  • [:2]是切片操作,直接取排序后列表的前两个元素(也就是最小的两个数)
  • 最后用列表推导式对这两个数执行你需要的计算(这里是乘2,你可以换成任何你要的操作,比如x**2求平方之类的)

方案2:用堆队列取最小元素(更高效的通用写法)

如果以后你要处理的数字变多,或者想追求更高效的取最小元素方式,可以用heapq模块的nsmallest函数,写法同样简洁:

import heapq

def square(a, b, c, d):
    return [x * 2 for x in heapq.nsmallest(2, [a, b, c, d])]

heapq.nsmallest(2, 列表)会直接返回列表中最小的2个元素,不用全量排序,数据量大的时候性能更好,不过对于四个数来说,两种方法的效率差别可以忽略不计,看你个人偏好选择。

补充:你之前尝试的sort+pop思路也能改写成单行

如果你还是想试试自己一开始想到的sort+pop的思路,其实也能整合到单行里(不过可读性稍差一点):

def square(a, b, c, d):
    nums = [a,b,c,d]; nums.sort(); return [x*2 for x in nums[:2]]

这里用分号把多行代码合并成一行,但其实不太推荐这种写法,因为会牺牲代码的可读性,前面两种方案的可读性要好得多。

不管选哪种,都完全避开了讨厌的if-else分支,而且代码简洁紧凑,符合你要的“单行实现”的需求~

备注:内容来源于stack exchange,提问作者C P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 08:44:35