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

获取100-1000范围内回文数的两种Python实现哪种更优?

两种三位数回文数实现方案对比

首先明确两种实现的代码:

方案1:算术运算校验首尾位

palindromes = [n for n in range(100, 1000) if n // 100 == n % 10]
print(palindromes)

方案2:字符串反转比对

palindromes = [i for i in range(100, 1001) if str(i) == str(i)[::-1]]
print(palindromes)

对比结论

性能层面:方案1更优

  • 执行速度:算术运算是Python底层原生支持的数值操作,没有额外对象创建开销。方案2需要多次生成字符串对象、做反转和逐字符比对,开销远高于数值运算。实际测试同范围计算,方案1速度是方案2的3~4倍。
  • 资源占用:方案1全程仅操作整数,无临时对象生成,内存占用可忽略。方案2单次校验就会生成至少2个临时字符串,累计产生的大量临时对象会提升内存占用,增加垃圾回收压力。

实际开发选择建议

  • 如果需求固定为仅处理三位数的回文数判断,直接选方案1,针对性优化后性能最高,逻辑也足够简单易懂。
  • 如果需求后续可能扩展到任意位数的回文数判断,选方案2:不需要针对数字位数调整校验逻辑,通用性更强,代码可读性更高,新手也能一眼看懂判断逻辑。

额外小提示:两个代码的范围参数有细微差异,方案1的range(100, 1000)刚好覆盖所有三位数,范围精准;方案2的range(100, 1001)多包含了1000,不过1000本身不是回文数,不会影响最终输出结果,属于代码小冗余。

内容的提问来源于stack exchange,提问作者clawingcode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:27:00