python匿名函数lambda与switch的实现

本文介绍了Python中的Lambda表达式使用方法,通过递归实现阶乘计算,并展示了如何利用reduce函数进行累积运算。此外还介绍了如何使用字典和函数来实现类似于switch-case的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 )

 

转载于:https://www.cnblogs.com/ghostwu/p/8604832.html

Python本身并没有直接提供像其他语言(如C、Java等)那样的`switch`语句,但是可以通过多种方式模拟出类似的功能。 ### 模拟Switch功能的方式 #### 使用字典映射 最常见的做法是利用字典来实现类似于`switch-case`的行为。通过将每个“case”对应到某个函数或值上,可以构建一个简单的替代方案: ```python def switch_case(value): return { 'a': lambda: "这是 case a", 'b': lambda: "这是 case b", 'c': lambda: "这是 case c" }.get(value, lambda: "默认情况")() print(switch_case('b')) # 输出: 这是 case b ``` 这里我们创建了一个匿名函数组成的字典,并使用`.get()`方法查找对应的键;如果找不到,则返回默认处理程序。 #### if-elif链式结构 虽然不如专门的 `switch` 结构简洁,但在某些场景下也可以用连续的条件判断代替它: ```python value = 'b' if value == 'a': print("这是 case a") elif value == 'b': print("这是 case b") elif value == 'c': print("这是 case c") else: print("默认情况") ``` 这种方法比较直观易懂,在分支较少的情况下是一个不错的选择。 #### match-case (从 Python 3.10 开始支持) 自Python版本更新至3.10之后新增了原生的支持——即`match-case`语法糖形式的开关机制: ```python value = 'b' match value: case 'a': result = "这是 case a" case 'b': result = "这是 case b" case 'c': result = "这是 case c" case _: result = "默认情况" print(result) # 当 value='b'时会打印 “这是 case b” ``` 以上就是几种常见的在Python里模拟 Switch 功能的方法啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值