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

如何从字符串中提取所有整数并转为整数列表?

嘿,我懂你想要更简洁优雅的方式从字符串里提取所有整数到列表里,你的现有代码确实有点冗余,这里给你几个高效的方案,完全符合你想用内置函数、lambda或列表推导式的需求:

方案1:正则表达式(最简洁高效)

正则表达式是处理这类字符串提取问题的利器,re.findall可以直接匹配出所有连续的数字,不管字符串里的分隔符是括号、逗号还是空格,都能完美提取多位数:

import re

def extract_integers(s):
    # 匹配一个或多个数字,转成整数列表
    return list(map(int, re.findall(r'\d+', s)))

# 测试示例
print(extract_integers('(3, 10)'))  # 输出 [3, 10]
print(extract_integers('3 10'))     # 输出 [3, 10]

方案2:无正则的简洁迭代法

如果你不想引入re模块,这个优化后的迭代方法比你原来的代码简洁很多,避免了空字符串过滤的步骤:

def extract_integers(s):
    current_num = ''
    nums = []
    for char in s:
        if char.isdigit():
            current_num += char
        elif current_num:
            nums.append(int(current_num))
            current_num = ''
    # 处理字符串末尾的最后一个数字
    if current_num:
        nums.append(int(current_num))
    return nums

# 测试示例
print(extract_integers('(3, 10)'))  # 输出 [3, 10]
print(extract_integers('3 10'))     # 输出 [3, 10]

对比你的原有代码

你的代码里用了enumerate,还需要额外过滤空字符串,而上面的方法要么用正则一步到位,要么通过更清晰的逻辑避免了空值的产生,代码更紧凑易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:43:58