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

Python实现数字序列拆分为整数列表

拆分字符串为指定整数列表的实现方法

要将字符串'20020050055'拆分为[200, 200, 500, 5, 5]这样的整数列表,核心规则是从左到右优先按3位拆分,剩余不足3位的字符逐个拆分。以下是几种比enumerate更简洁高效的实现:

方法1:循环切片法(直观高效)

这种方法通过直接切片处理完整的3位段,再逐个处理剩余字符,逻辑清晰且性能最优:

s = '20020050055'
result = []
i = 0
str_len = len(s)

# 处理所有完整的3位片段
while i + 3 <= str_len:
    result.append(int(s[i:i+3]))
    i += 3

# 处理剩余的单个字符
while i < str_len:
    result.append(int(s[i]))
    i += 1

print(result)  # 输出: [200, 200, 500, 5, 5]

方法2:列表推导式+映射(代码简洁)

利用列表推导式生成所有子串,再通过map转换为整数,代码更紧凑:

s = '20020050055'
str_len = len(s)
# 生成前n-2位的3位子串,再拼接最后两位的单个字符
parts = [s[i:i+3] for i in range(0, str_len - 2, 3)] + list(s[str_len - 2:])
result = list(map(int, parts))

print(result)  # 输出: [200, 200, 500, 5, 5]

对比enumerate实现

如果用enumerate实现,需要维护临时缓存来拼接字符,逻辑相对繁琐:

s = '20020050055'
result = []
temp = []
for idx, char in enumerate(s):
    temp.append(char)
    if (idx + 1) % 3 == 0:
        result.append(int(''.join(temp)))
        temp = []
# 处理剩余字符
if temp:
    if len(temp) == 2:
        result.extend(int(c) for c in temp)
    else:
        result.append(int(''.join(temp)))

print(result)

显然前两种方法在代码简洁性和可读性上都更优,且时间复杂度均为O(n),能高效处理任意长度的输入字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:55:27