Python中未知两整数起止大小前提下获取含两端值范围的Pythonic方法
实现方案
方案1:全版本兼容(Python3全支持,可读性最佳)
直接通过分支判断生成对应序列,无冗余重复比较,逻辑直观易读:
list(range(a, b + 1)) if a <= b else list(range(a, b - 1, -1))
测试验证:
- 入参
a=4, b=7,返回结果为[4, 5, 6, 7] - 入参
a=7, b=4,返回结果为[7, 6, 5, 4]
完全匹配需求,无额外临时变量,代码简洁符合Pythonic规范。
方案2:Python3.8+ 更短写法(使用海象运算符)
如果运行环境支持Python3.8及以上版本,可以通过海象运算符复用步长计算结果,进一步缩短代码:
list(range(a, b + (s:=1 if a < b else -1), s))
该写法仅执行一次大小比较,运行效率略高于分支写法,同样没有额外临时变量。
内容的提问来源于stack exchange,提问作者576i
相关产品推荐
相关产品推荐

