python中的ast.literal_eval

遇到这个库的方法是因为之前写力扣两数之和的时候,一直用的暴力方法,今天学习了哈希方法。

之后我手写输入输出的时候,发现,自己输入的列表会被转成字符串,于是查了一下资料发现用这个ast.literal_eval方法(需要import ast),可以解析字符串中的数据
ast.literal_eval 是 Python 标准库中 ast(抽象语法树)模块提供的函数,用于​​安全地评估​​字符串形式的 Python 表达式。与 eval() 函数最大的区别:​​限制只解析字面量表达式​​
不执行任何函数调用、变量访问或操作​​,消除代码注入风险。
用法也很简单,附上一个用法和两数之和哈希表解法:

import ast


class solution:
    def twoSum(self,nums,target):
        hashmap = {}
        #创建一个新的哈希表
        for index,item in enumerate(nums):
            #先算一下每一项与target差的数是几
            c = target - item
            # 如果差的数c在hashmap中,则找到答案了
            if c in hashmap:
                return [hashmap[c],index]
            # 没找到就把当前这个数也加到hashmap中
            hashmap[item] = index
        return []
sol = solution()

nums_str = input("输入列表")
nums = ast.literal_eval(nums_str)
target = int(input("输入目标值"))
rel = sol.twoSum(nums,target)
print(rel)

输出结果是:

[0, 1]
posted @ 2025-06-01 21:18  爆爆啥龙马  阅读(401)  评论(0)    收藏  举报