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

如何将含算术表达式的字符串列表转换为整数列表?

Python:将算术表达式字符串列表转为整数列表

这里有几种适合新手的实现方式,可根据你的场景选择:

1. 直接使用eval()(简单但注意安全)

这是最快捷的方法,适合处理可信来源的简单算术表达式:

x = ['30+20', '1-500']
result = [eval(expr) for expr in x]
print(result)  # 输出: [50, -499]

⚠️ 注意:eval()会执行任何传入的Python代码,如果你的字符串来自不可信的外部输入(比如用户提交的内容),绝对不要用这个方法,存在严重安全风险。

2. 更安全的表达式求值(推荐)

使用ast模块限制执行范围,只处理合法的算术表达式,比直接用eval()更安全:

import ast

def evaluate_expression(expr):
    # 先尝试用literal_eval处理,失败则用受限的eval
    try:
        return ast.literal_eval(expr)
    except ValueError:
        expr_ast = ast.parse(expr, mode='eval')
        return eval(compile(expr_ast, '', 'eval'))

x = ['30+20', '1-500']
result = [evaluate_expression(expr) for expr in x]
print(result)  # 输出: [50, -499]

这个方法会先检查表达式的语法合法性,避免执行恶意代码,同时支持常见的算术运算(加减乘除、取模等)。

3. 手动解析简单表达式(最安全,适合固定运算符场景)

如果你的表达式只有加减这类简单运算,可以手动拆分字符串计算,完全避免执行外部代码:

def calculate_simple(expr):
    if '+' in expr:
        num1, num2 = expr.split('+')
        return int(num1) + int(num2)
    elif '-' in expr:
        num1, num2 = expr.split('-')
        return int(num1) - int(num2)
    # 可根据需要扩展乘(*)、除(/)等运算符的处理逻辑

x = ['30+20', '1-500']
result = [calculate_simple(expr) for expr in x]
print(result)  # 输出: [50, -499]

这种方法没有安全风险,但需要提前明确要支持的运算符类型,扩展性稍差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:45:46