技术标签: python中symbols函数用法
本文实例讲述了Python中偏函数用法。分享给大家供大家参考,具体如下:
python中偏函数
当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。
比如,int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:
>>> int('12345')
12345
但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做 N 进制的转换:
>>> int('12345', base=8)
5349
>>> int('12345', 16)
74565
假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:
def int2(x, base=2):
return int(x, base)
这样,我们转换二进制就非常方便了:
>>> int2('1000000')
64
>>> int2('1010101')
85
functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:
>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1010101')
85
所以,functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。
任务
在第7节中,我们在sorted这个高阶函数中传入自定义排序函数就可以实现忽略大小写排序。请用functools.partial把这个复杂调用变成一个简单的函数:
sorted_ignore_case(iterable)
要固定sorted()的cmp参数,需要传入一个排序函数作为cmp的默认值。
参考代码:
#!/usr/bin/python
#coding: utf-8
import functools
# cmp = lambda s1, s2: cmp(s1.upper(), s2.upper()) 最左边一定要有cmp = , 这样执行print的时候会执行
# 匿名函数中的cmp函数,关于为什么使用cmp = ,请看上面的例子中,base = 2, 如果说没有base = 的话,结果
# 肯定会出错
# cmp函数释义:
# cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
# 用于排序中,默认从小到大
sorted_ignore_case = functools.partial(sorted, cmp = lambda s1, s2: cmp(s1.upper(), s2.upper()))
print(sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit']))
# 不使用偏函数的时候
'''
def cmp_ignore_case(s1, s2):
u1 = s1.upper()
u2 = s2.upper()
if u1 > u2:
return 1
if u1 < u2:
return -1
return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
'''
运行结果:
['about', 'bob', 'Credit', 'Zoo']
希望本文所述对大家Python程序设计有所帮助。
1.服务器快速搭建RabbitMq由于RabbitMq是用具有高并发特性的erlang语言编写,所有首先需要在服务器上安装erlang语言环境,采用yum软件管理包来安装。 进入服务器终端,输入以下内容yum -y install erlang -y 服务器执行效果如下,等待安装完毕 安装完语言环境就能下载安装RabbitMq了,同样采用yum的形式安装,输入一下内容yum install rabbitmq-server -y 通过上面两个步骤我们安装了RabbitMq
损失函数——交叉熵损失函数(CrossEntropy Loss)交叉熵函数为在处理分类问题中常用的一种损失函数,其具体公式为:1.交叉熵损失函数由来交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性。首先我们来了解几个概念。1.1信息量信息论奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”。也就是说衡量信息量大小就看这个信息消除不确定性的程度。“太阳从东方升起了”这条信息没有减少不确定性。因为太阳肯定从东面升起。这是句废话,信息量为0。“六
```javascriptexport default { props: { //数组 DepartmentDeptList: { type: Array, default: () => [] }, //对象 CommentResultID: { type: Object, default () { return {} } }, }}...
到这儿来~(feat.美丽的嫦娥姐姐嗯经过了一周的实(mo)践(yu)之后,打算还是给ResNet出个续集毕竟downsample这一块儿实在是挺费解的其中ResNet出现的downsample,可以大致分为一下两种1.1真正意义上让output.shape长宽变成1/2的我暂且称之为real downsample1.2 shortcut前的x的为了适应shortcut后变化的shape而做的自适应调节 我暂且称之为 identity downsample以下的所有案例,我们以Res
基于区域的对比度方法python代码:【原文请点击】基于区域对比度分析的显著性检测通过定义每个区域与其他区域的相似度权重得到区域显著性值,完成显著性检测。RC做法需要首先生成区域,通过基于图的图像分割得到很多图像区域,对一个区域计算显著性值。算法流程:图片RGB转Lab颜色空间高斯模糊基于图的图像分割,形成分割区域【代码点击】量化颜色值,减少计算量【代码点击】创建区域并形成区域对...
word交叉引用只需两步即可,3分钟即会第一步: 插入编号文档中有如下参考文献,但还没有[1],[2],[3]等编号。那么先给参考文献编号序号,使用word—>开始—>编号接下来给参考文献标好序号,光标选到某参考文献前,点编号即可自动编号,如下图所示标完序号如图所示第二步:正文引用编号将光标定位在正文中需要插入参考文献上标的地方,点击“...
简介:源码是开源的,已经整理打包好,顺便美化了界面布局让看起来更像游戏机。内包含了众多我们小时候玩过的小霸王游戏机游戏,真一下就找回了童年记忆,这应该也是最近走红的原因吧。这款网页版无需下载,网页端点开进入即可畅玩,完美适配移动端及PC端,内置各类原版卡带,马桶时间杀手。网盘下载地址:http://kekewl.net/RnW0WY93Zcw0图片:...
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Notepad++下载及安装(含插件)(2021.06.15)前言一、如何下载?二、安装步骤1.安装指南2.插件下载总结前言对于日益恶劣的下载环境,整理的一份下载指南一、如何下载?1.百度到的结果很遗憾,第一个要下载金山毒霸第二个第三个也同样令人望而生畏2.那么去官网下载吧(可直接复制粘贴)https://notepad-plus-plus.org/downloads/随便下载一个版本二、安装步骤1.安装指南
Vue3过渡&动画实现动画认识动画在开发中,我们想要给一个组件的显示和消失添加某种过渡动画,可以很好的增加用户体验:React框架本身并没有提供任何动画相关的API,所以在React中使用过渡动画我们需要使用一个第三方库 react-transition-group;Vue中为我们提供一些内置组件和对应的API来完成动画,利用它们我们可以方便的实现过渡动画效果;我们来看一个案例:Hello World的显示和隐藏;通过下面的代码实现,是不会有任何动画效果的;没有动画的情况下
Signal processing (scipy.signal)Convolutionconvolve(in1, in2[, mode, method])Convolve two N-dimensional arrays.correlate(in1, in2[, mode, method])Cross-correlate two N-dimens
gperftools性能测试工具的介绍在google的高并发线程池的源码中,就存在有gperftools的性能测试工具。在google高并发线程池中在自身的内存管理malloc/free的时候就使用到了tcmalloc,并且tcmalloc组件出自google开源的gperftools性能分析集,并且=现在的很多场景都是基于tcmalloc带来的好处,例如tcmalloc用于提升mysql等等组...
什么是SQL注入通过操作输入来修改SQL语句来非法获取数据库中的数据解决思路:对用户输入的内容进行合法校验方案一:可以使用PreparedStatement方案二:使用正则表达式...