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

如何在Python中高效生成包含数字各位数值的列表?

数字转各位数值列表的更优实现方法

你提到的字符串转换方法确实直观易读,但如果追求纯数值运算的实现(避免类型转换开销),可以试试下面几种方法:

循环取模法(最稳妥高效)

通过数学运算逐位提取数字,适配所有正整数场景,还能处理n=0的特殊情况:

def get_digits(n):
    if n == 0:
        return [0]
    digits = []
    while n > 0:
        digits.append(n % 10)  # 提取最后一位数字
        n = n // 10  # 移除最后一位数字
    return digits[::-1]  # 反转列表得到正序结果

# 测试示例
print(get_digits(225))  # 输出 [2, 2, 5]

递归拆分法(代码更简洁)

利用递归逐层拆分数字,直接生成正序列表,无需额外反转操作:

def get_digits(n):
    if n < 10:
        return [n]
    return get_digits(n // 10) + [n % 10]

# 测试示例
print(get_digits(225))  # 输出 [2, 2, 5]

注意:递归方法受限于Python默认递归深度(约1000层),处理超大型数字(如千位以上整数)时可能触发栈溢出,此时循环法更可靠。

方法对比

  • 字符串转换法:代码最短、易读性最高,适合普通业务场景,性能足够日常使用。
  • 纯数值运算方法:无类型转换开销,在处理超大型整数或对性能要求极高的场景下更有优势。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:33:01