在 python 中编写数值查找函数

Posted

技术标签:

【中文标题】在 python 中编写数值查找函数【英文标题】:Writing numerical lookup functions in python 【发布时间】:2014-07-29 10:45:41 【问题描述】:

在 python 中,我想创建几个用户定义的函数 f(x),它们仅在整数值 x = i 处定义,其中 i 的范围从 1 到几百。函数本身不能表示为分析或逻辑公式,但值 f(i) 对于支持范围内的所有值 i 都是已知的,因此可以写为值 i、f(i) 对的表。

虽然我已经使用 def ... 在 python 中编写了很多函数,但我仍然是 python 新手,我还不知道如何有效地编写一个必须使用某种形式的数值查找表的函数。我寻求您的帮助,并提供一个合适的代码示例。

【问题讨论】:

【参考方案1】:

使用字典,例如

LOOKUP = 
    0: 100,
    1: 101,
    3: 102,
    9: 103,

def f(x):
    return LOOKUP[x]

【讨论】:

您可以在函数中隐藏字典。对于超出范围的x 值,可能会返回一个不错的错误。 但是每次调用函数时你都会有创建它的成本。从 OP 来看,听起来字典可能很大。 如果查找表应该在模块内部,习惯上在其名称前加上下划线;所以_lookup 而不是LOOKUP。另一件要考虑的事情是,如果你想处理函数内部可能出现的KeyError 异常。 来自 OP:对我来说,作为一个天真的 python 新手,Daniel & Tom 的解决方案似乎是等效的。在当前所需的实现中,i 取值 1 到 400,f(i) 值是浮点数。 Tichodroma 关于返回错误值的评论也可能很有用,尽管我不太明白“隐藏字典......”的含义。请详细说明。 @TonyMorland:他的意思是在f 内部而不是在外部编写巨大的LOOKUP dict。【参考方案2】:

你不想要这个功能。 Python 中的映射是通过字典表示的。

mapping = 
    1: 300,
    3: 990,
    45: 267,
    # etc


result = mapping[value]

【讨论】:

你应该做一个 Python 教程:这是非常基本的东西。你如何处理它取决于你想做什么:如果你有一个默认值,如果没有匹配,你想返回,你可以做mapping.get(value, default_value) 对我的简单初学者问题表示歉意,这些问题显然远低于本网站其他人的标准,但我们都必须从某个地方开始,感谢您和所有提供帮助的人。 这应该是一个真诚的建议,而不是侮辱:你真的会从做一个教程中受益。 是的,我同意,我非常感谢您提供的帮助。

以上是关于在 python 中编写数值查找函数的主要内容,如果未能解决你的问题,请参考以下文章

python编写自定义函数计算约登值(约登指数Youden Index)寻找最佳阈值(thresholdcutoff)可视化ROC曲线并在曲线中标记最佳阈值及其数值标签

python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)

python基于模型的预测概率和标签信息可视化ROC曲线编写自定义函数计算约登值寻找最佳阈值(thresholdcutoff)可视化ROC曲线并在曲线中标记最佳阈值及其数值标签

Python学习笔记

在 Python 中使用 Reduce 函数查找阶乘

EXCEL函数如何查找数值在工作表中的位置?