Python函数嵌套定义的洪荒之力
本文重点在于:Python允许函数的嵌套定义,这在有些情况下会带来很多方便。
感谢中国石油大学(华东)计算机与通信工程学院李昕老师提供问题。
假设有个列表,内容如下:
>>> x = list(range(20))
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
现在我们想得到一个新列表,其中每个值都是x中元素值加5,这很容易用Python内置函数map()实现,例如:
>>> list(map(lambda i: i+5, x))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
如果我们想看看哪些元素值大于5,可以像下面这样来做:
>>> list(map(lambda i: i>5, x))
[False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True]
好了,现在我们有个新需求,就是让这个固定的5是可变的,不使用常数,而是改为一个变量,同时保持问题性质不变,这样用起来就更加灵活了。但问题在于map()函数只能接收一个函数和1个或多个序列作为参数,并不能直接满足我们的需求。
当当当当,其实我们这样来做:
>>> def myMap(lst, value):
return map(lambda i: i>value, lst)
>>> list(myMap(x, 5))
[False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True]
>>> list(myMap(x, 10))
[False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True]
针对上面简单的需求,我们想要的功能已经实现了,如果我们要做的处理过于复杂而无法使用一个lambda表达式来实现,就只好拿出我们的大杀器了:嵌套函数定义。
>>> def myMap(lst, value):
def func(x):
return x>value
return map(func, lst)
让我们试一下好用不好用:
>>> list(myMap(x, 5))
[False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True]
>>> list(myMap(x, 10))
[False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True]
和我们想要的功能完全一致。
温馨提示:单击文章顶部作者名字旁边浅蓝色的“Python小屋”进入公众号,关注后可以查看更多内容!
欢迎转发给您的朋友,或许这正是Ta需要的知识!
Python函数嵌套定义的洪荒之力相关推荐
- 微课|Python程序设计开发宝典(5.1.2节):函数嵌套定义1
适用教材:董付国著,<Python程序设计开发宝典>,清华大学出版社,2017 第5章 函数 5.1.2 函数嵌套定义.可调用对象.修饰器 京东购买链接:https://item.jd ...
- python基础之函数嵌套定义
博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏. ...
- python函数参数定义顺序_18 Python - 函数定义与参数
12 函数定义与参数 01函数 (1)定义: def 函数名(参数1,参数2--): 函数体 return 结果 (2)调用: 函数名(实际参数) (3)函数作用: 最大化代码重用, 最小化代码冗余, ...
- python函数参数定义不合法_下列哪种函式参数定义不合法?
python 函数参数定义有四类: 1,必选参数:调用函数时候必须赋值的参数. a,须以正确的顺序传入函数 b,调用时的数量必须和声明时的一样 def exa(x): return x #b作为参数进 ...
- python函数定义及调用-python函数的定义和调用 | 酷python
python函数的定义与调用 在python中 ,函数是一个组织好的 ,可以重复使用的代码段 ,函数可以提高代码的重复利用率 ,原则上一个函数只实现一个单一的功能 ,这样能增强程序的模块性, pyth ...
- python函数参数定义_python函数定义中的5种参数
python函数参数定义 Python函数定义中的5种参数类型: (5 Types of Arguments in Python Function Definition:) default argum ...
- python函数嵌套调用的实现
函数嵌套是指在一个函数中定义了或者调用另外一个函数. 下面分别简单举例描述一下在一个函数中定义和调用另外一个函数: 1.在一个函数中定义函数 def outfun():def infun1():pri ...
- Python函数的定义和使用教程
def test(x): # x代表形参'''2*x+1:param x:整形数字:return:返回计算结果'''y = 2*x+1return y p = test(3) # test()表示运行 ...
- Python函数的定义和使用
def test(x): # x代表形参'''2*x+1:param x:整形数字:return:返回计算结果'''y = 2*x+1return y p = test(3) # test()表示运行 ...
最新文章
- Android客户端多线程实例分析
- python下 help()使用方法
- weexpack占据的存储空间
- Spring Batch –使用JavaConfig替换XML作业配置
- MySQL的索引优化
- bootstrap-table 行合并和列合并,以及固定列宽度等问题
- android8 呼吸灯,红米note8pro呼吸灯颜色如何设置?
- Bailian2911 受限完全平方数【暴力】
- VBS代码--很恶心的整人效果
- 搭建webservice服务报错求解
- 对HashMap进行排序处理
- 为知笔记打不开 ziw 文件问题
- 本计算机家庭组的用户名,家庭组
- 【Ubuntu】如何在Ubuntu系统上设置好看的动态壁纸(Komorebi)
- 2019-1-5-问答-产品经理有哪些细分领域,对应特点是什么?
- latex 分页_latex 排版 首页不会换页
- 小米路由器R4AC 小米路由器4A百兆版 原厂BootLoader和eeprom
- zabbix监控配置(Grafana)
- sqlserver数据库同步更新数据到mysql数据库,利用ODBC
- CSS解决英文自动换行问题
热门文章
- 小米机器人 尘盒配件_石头扫地机器人T6评测:一款提升生活辛福感的宝物
- c语言中三种常用的循环控制结构是,三C语言的基本控制结构.ppt
- python中exit 的作用_Python退出命令-为什么要使用这么多?何时使用每个命令?
- 11g cursor_sharing 参数说明
- fragment类中的点击事件空指针异常
- 基于JAVA+SpringMVC+MYSQL的简单企业人事管理系统
- 199-Pycharm相关
- 为什么要用BigDecimal
- 智课雅思短语---二、exert positive/ negative effects on…
- POJ 3253-Fence Repair(堆)