Python如何将含多位数、运算符的混合字符串转为对应列表,仅用内置函数实现?
表达式拆分实现方案
你可以通过遍历字符串拼接连续数字的方式实现,全程只用Python内置语法和方法,不需要导入任何额外模块:
def split_expression(expr: str) -> list: result = [] current_num = "" for char in expr: # 是数字就暂存拼接 if char.isdigit(): current_num += char else: # 碰到运算符先把之前攒的数字存入结果 if current_num: result.append(int(current_num)) current_num = "" # 存入当前运算符 result.append(char) # 处理表达式末尾的数字 if current_num: result.append(int(current_num)) return result
效果测试
你可以直接用你给出的两个示例直接验证:
- 单数字场景输入:
'1-2=3^4/5
执行代码:print(split_expression('1-2=3^4/5'))
输出结果:[1, '-', 2, '=', 3, '^', 4, '/', 5] - 多位数场景输入:
'12-34=56^78/90
执行代码:print(split_expression('12-34=56^78/90'))
输出结果:[12, '-', 34, '=', 56, '^', 78, '/', 90]
逻辑说明
实现逻辑非常好理解:
- 初始化一个空列表存最终结果,再初始化一个空字符串暂存连续的数字字符
- 逐个遍历表达式里的每一个字符:
- 如果是数字就拼接到暂存的数字字符串里
- 如果是运算符,就先把之前暂存的数字字符串转成整数存入结果列表,清空暂存字符串后再把当前运算符存入结果
- 遍历完全部字符后,要记得把最后暂存的最后一段数字也转成整数存入结果,避免漏掉表达式末尾的数字
内容的提问来源于stack exchange,提问作者user17162159
相关产品推荐
相关产品推荐

