python匿名函数lambda与switch的实现
1,lambda的语法跟es6的箭头函数差不多
>>> show=lambda x,y: x * y
>>> show( 10, 20 )
200
2,递归求阶乘
>>> def fab( n ):
... if n == 0:
... return 1
... else:
... return n * fab( n - 1)
...
>>> fab( 3 )
6
>>> fab( 5 )
120
>>> fab( 6 )
720
>>>
利用reduce函数,也可以实现累计运算
>>> l = range( 1, 6 )
>>> l
[1, 2, 3, 4, 5]
>>> def f( x, y ):
... return x * y
...
>>> reduce( f, l )
120
>>>
不需要定义函数,可以用lambda表达式简化
>>> fab = lambda x, y: x * y
>>> reduce( fab, [ 1, 2, 3, 4, 5, 6 ] )
720
>>> reduce( lambda x,y: x *y, [ 1, 2, 3, 4, 5, 6 ] )
720
>>>
3,字典+函数可以实现switch的分支判断效果
if。。。。else实现一个加减法
#!/usr/bin/python
#coding:utf-8 from __future__ import division def add( a, b ):
return a + b
def sbb( a, b ):
return a - b
def mul( a, b ):
return a * b
def div( a, b ):
return a / b def oper( x, o, y ):
if o == '+':
return add( x, y )
elif o == '-':
return sbb( x, y )
elif o == '*':
return mul( x, y )
elif o == '/':
return div( x, y )
else:
pass print oper( 10, '/', 20 )
用字典和函数改造成switch的方式
#!/usr/bin/python
#coding:utf-8 from __future__ import division def add( a, b ):
return a + b
def sbb( a, b ):
return a - b
def mul( a, b ):
return a * b
def div( a, b ):
return a / b oper = { '+' : add, '-' : sbb, '*' : mul, '/' : div }
def mySwitch( o, x, y ):
#return oper[o]( x, y )
#oper.get(o)等价于oper[0]取字典中的某一项
return oper.get(o)( x, y ) print mySwitch( '/', 10, 20 )
python匿名函数lambda与switch的实现的更多相关文章
- python 匿名函数lambda使用
lambda函数语法格式: lambda函数 后面参数可以有一个或多个,冒号后面是python表达式: lambda 参数1,参数2,参数3...:表达式 # 一个参数情况: a = lambda x ...
- Day 7 :一句话Python(匿名函数-lambda,三元运算,列表表达式,生成器表达式)
注意: 1.所有的列表表达式都可以转换成生成器表达式 2.经量让标傲世简化你得操作,增加代码可读性 3.如果代码过于复杂,应该转换成普通代码 4.再代码中尽可能多使用生成器表达式. 三元运算符:简化代 ...
- 被老猿误解的Python匿名函数lambda
在<第2.3节 Python运算符大全>老猿这样描述lambda:"上述运算符中有个lambda,这是个lambda就是用来定义一个匿名函数的.老猿认为用处不大,具体内容大家可以 ...
- python 匿名函数 lambda 的使用
在python中,lambda允许用户快速定义单行函数,当然用户也可以按照典型的函数定义完成函数.lambda的目的就是简化用户定义使用函数的过程. In [6]: s = lambda x: x+1 ...
- python 匿名函数 lambda
一.lambda使用语法: 关键字lambda表示匿名函数,冒号前面的x表示函数参数,冒号后面只能有一个表达式,不用写return,返回值就是该表达式的结果. >>> list(ma ...
- Python匿名函数——lambda表达式
如果要定义的函数很简单,一个return语句就能搞定,可以使用lambda表达式来定义, lambda表达式的语法如下: lambda parameters: expression lambda表达式 ...
- Python匿名函数(lambda)
result = lambda [arg1 [, arg2, .....]]:expression result:用于调用lambda表达式 [arg1 [, arg2, -]]:可选参数,用于传递参 ...
- python匿名函数(lambda)
简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方 ...
- python的匿名函数lambda解释及用法
lambda函数的语法只包含一个语句,如下: lambda arg1,arg2,.....argn:expression(主要是看下面的例子)代码示例: #-*- coding:utf-8 -* ...
随机推荐
- MariaDB 用户与权限管理(12)
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...
- ssh登录时在参数中加入密码的解决方案
在使用ssh登录远程服务器的时候,在执行完ssh user@ip后,要输入登录密码,有时候登录密码记不住,这样以来Ian带来的很多的麻烦,有没有一种在ssh的参数中直接加入密码的方法呢?查看ssh的帮 ...
- Tomcat 启动成功后报 INFO [Timer-0] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access:
Tomcat 启动成功后报 INFO [Timer-0] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceL ...
- @transactional作用和事务
今天在博客园看到有发布spring的注解,留意到@transactional这个注解.立马就百度.学习了 使用这个注解的类或者方法表示该类里面的所有方法或者这个方法的事务由spring处理,来保证事务 ...
- 剑指offer十四之链表中倒数第k个结点
一.题目 输入一个链表,输出该链表中倒数第k个结点. 二.思路 两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点.然后两个指针同时往后移动,当第一个结 ...
- Nginx配置SSL自签名证书
生成自签名SSL证书 生成RSA密钥(过程需要设置一个密码,记住这个密码) $ openssl genrsa -des3 -out domain.key 1024 拷贝一个不需要输入密码的密钥文件 $ ...
- CentOS 6.7 下 PostgreSQL 9.5 的安装与配置
#yum方式安装(不同的系统版本对应的版本也不同) yum install postgresql-server #安装指定版本 yum install https://download.postgre ...
- MyBatis中如何一次执行多条语句(使用mysql数据库)
解决办法不外乎有三个:1.多条sql分批执行:2.存储过程或函数调用:3.sql批量执行. MyBatis中如何一次执行多条语句(使用mysql数据库): 1.修改数据库连接参数加上allowMult ...
- JVM(四)JVM的双亲委派模型
1.两种不同的类加载器 从JAVA虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分:另 ...
- Chapter 2 Open Book——13
"People in this town," he muttered. "Dr. Cullen is a brilliant surgeon who could prob ...