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]

浙公网安备 33010602011771号