python中factorial什么意思,什么是备忘录,如何在Python中使用备忘录?
I just started Python and I've got no idea what memoization is and how to use it. Also, may I have a simplified example?
解决方案
Memoization effectively refers to remembering ("memoization" → "memorandum" → to be remembered) results of method calls based on the method inputs and then returning the remembered result rather than computing the result again. You can think of it as a cache for method results. For further details, see page 387 for the definition in Introduction To Algorithms (3e), Cormen et al.
A simple example for computing factorials using memoization in Python would be something like this:
factorial_memo = {}
def factorial(k):
if k < 2: return 1
if k not in factorial_memo:
factorial_memo[k] = k * factorial(k-1)
return factorial_memo[k]
You can get more complicated and encapsulate the memoization process into a class:
class Memoize:
def __init__(self, f):
self.f = f
self.memo = {}
def __call__(self, *args):
if not args in self.memo:
self.memo[args] = self.f(*args)
#Warning: You may wish to do a deepcopy here if returning objects
return self.memo[args]
Then:
def factorial(k):
if k < 2: return 1
return k * factorial(k - 1)
factorial = Memoize(factorial)
A feature known as "decorators" was added in Python 2.4 which allow you to now simply write the following to accomplish the same thing:
@Memoize
def factorial(k):
if k < 2: return 1
return k * factorial(k - 1)
The Python Decorator Library has a similar decorator called memoized that is slightly more robust than the Memoize class shown here.
python中factorial什么意思,什么是备忘录,如何在Python中使用备忘录?相关推荐
- python包含多个元组的元组_如何在python中将多个”列出的”元组连接成一个元组?...
在python中,关于这个问题的答案很少,如何将一个元组列表连接到一个列表中?,如何在python中合并两个元组?,如何在python中合并任意数量的元组?所有的答案都引用了元组列表,所以提供的解决方 ...
- 中boxplot函数的参数设置_如何在Python中生成图形和图表
在本章中,我们将学习如何在Python中生成图形和图表,同时将使用函数和面向对象的方法来可视化数据. Python中常用的一些可视化数据包括以下几种. Matplotlib. Seaborn. ggp ...
- python对文件每行数据计算_如何在python中对pandas数据帧的每一行进行计算?
我是python的新手,我正在尝试将我在R中创建的函数转换为python,R函数描述如下: 从我的阅读来看,在python中实现这一点的最佳方法是使用一个for循环,该循环采用以下形式for line ...
- python中换行符怎么写_语法 - 如何在Python中执行换行符(换行符)?
语法 - 如何在Python中执行换行符(换行符)? 我有一长串代码,我希望在多行之间分解. 我使用什么,语法是什么? 例如,添加一串字符串, e = 'a' + 'b' + 'c' + 'd' 并将 ...
- python中声明变量注意事项_我们如何在Python中声明变量?
简短的答案是,无需在Python中声明变量. 以下是更详细的描述. 静态类型语言(C,C ++,Java,C#)要求在程序中使用变量之前,必须先声明要使用的变量的名称和类型声明.相应的语言编译器确保将 ...
- python一次输入多个值_如何在Python的一行中从用户输入多个值?
为了读取语言C中的多个变量,我们编写类似-//Read three variable in one line scanf("%d %d %d", &x, &y, & ...
- vba中取小数点后两位数_如何在Excel中提取小数点后面的数字?
Excel中,如果某个单元格中包含一个带小数,要用公式提取该数值小数点后面的数字,例如A1单元格中包含一个数值"59178.68",在B1单元格中输入下面的公式: =RIGHT(A ...
- jenkins中maven的安装及配置,如何在jenkins中创建maven任务。
本文介绍了在jenkins中maven的安装及配置(安装maven及jdk的方法),以及如何在jenkins中创建maven任务. 有三点需要注意的地方. maven一定要安装在jenkins服务器上 ...
- php中判断星座的代码怎么写,如何在php中根据日期判断星座
如何在php中根据日期判断星座 发布时间:2021-02-18 17:02:34 来源:亿速云 阅读:78 作者:Leah 如何在php中根据日期判断星座?相信很多没有经验的人对此束手无策,为此本文总 ...
- python怎么设置环境变量_百度经验_如何在Python中设置环境变量
sisanared.. 49 os.environ行为类似于python字典,因此可以执行所有常见的字典操作.除了其他答案中提到的get和set操作之外,我们还可以简单地检查是否存在密钥 Python ...
最新文章
- AI突破难题才能预见未来
- 多通道接收机幅相校准测试系统的设计
- C语言信息系统贴吧,急 c语言学生信息管理系统
- 网络查找文档比自己电脑上还方便?
- python快速接手别人的代码_十步教你如何接手别人的代码!
- 洛谷P1984 SDOI2008烧水问题
- Go本地浏览Web服务器
- 【大数据之路-阿里巴巴大数据实践】第一篇 数据技术篇
- java开发系统架构_Java开发:ECP系统J2EE架构开发平台
- 初二生态系统思维导图_有关初中生态系统的思维导图
- 如何快速提取手机微信数据?
- BAT机器学习面试1000题系列大集合整理(320)
- LeetCode: 872. Leaf-Similar Trees
- 【商品架构day6】阿里闲鱼亿级商品结构化 - 用技术的力量去降低商户录入成本
- 全球及中国中线静脉插管行业研究及十四五规划分析报告
- 微信小程序 实时搜索并高亮关键字
- 阿里云轻量级云服务器部署Java项目
- uefi怎么念_uefi和legacy是什么意思
- 基于Unity3D的相机功能的实现(六)—— 上帝视角(王者荣耀视角)
- GM7123视频编码电路:TTL转VGA,替换SDA7123转换芯片