在 Python 中获取一个多位数的每一位数字,可以通过以下两种常用方法实现,我们以数字 12345
为例:
方法一:字符串转换法(直观易懂)
number = 12345
# 转换为字符串后遍历每个字符
digits = [int(d) for d in str(number)]
print(digits) # 输出: [1, 2, 3, 4, 5]
原理:
- 将数字转为字符串
"12345"
- 遍历字符串的每个字符
'1', '2', '3', '4', '5'
- 将每个字符转回整数
特点:
- ✅ 代码简洁
- ✅ 直观易理解
- ❌ 需要处理负号(如
-123
需要先取绝对值)
方法二:数学运算法(高效内存友好)
number = 12345
digits = []
# 处理负数(可选)
num = abs(number)
# 通过循环取余和整除获取每一位
while num > 0:
digits.append(num % 10) # 获取最后一位
num = num // 10 # 去掉最后一位
digits.reverse() # 反转列表得到正确顺序
print(digits) # 输出: [1, 2, 3, 4, 5]
原理:
- 通过
% 10
取余获取最后一位(如12345 % 10 = 5
) - 通过
// 10
去掉最后一位(如12345 // 10 = 1234
) - 重复直到数字为0
- 反转结果列表(因为获取顺序是逆序的)
特点:
- ✅ 内存效率高(适合超大数字)
- ✅ 纯数学运算
- ❌ 需要处理反转顺序
特殊场景处理
-
处理负数:
number = -123 digits = [int(d) for d in str(abs(number))] # 输出 [1, 2, 3]
-
处理零:
number = 0 digits = [0] # 直接返回 [0]
-
从右向左获取数字(不反转):
# 数学方法直接获取逆序 number = 12345 digits = [] while number > 0: digits.append(number % 10) # 输出 [5, 4, 3, 2, 1] number = number // 10
两种方法对比
特性 | 字符串法 | 数学法 |
---|---|---|
代码简洁性 | ⭐⭐⭐⭐ (更简单) | ⭐⭐⭐ |
内存效率 | ⭐⭐ (需生成字符串) | ⭐⭐⭐⭐ (直接操作数字) |
执行速度 | 适合普通场景 | 适合超大数字(如万位以上) |
适用场景 | 快速实现、调试 | 性能敏感型任务 |
最终选择建议:
- 如果是日常使用或数字位数较少 → 字符串法
- 如果处理超大数据(如百万位)→ 数学法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)