12_Python中匿名函数

一、匿名函数

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。(省略了用def声明函数的标准步骤)

lambda函数的语法只包含一个语句,如下:

lambda [arg1[,arg2,...argn]] : expression

lambda函数能接收任何数量的参数但只能返回一个表达式的值

二、实例

(1)引入

def sum(arg1:int , arg2:int):
    """
    求两数的和
    :param arg1:
    :param arg2:
    :return:
    """
    return arg1 +arg2

print("运行结果:",sum(3,4))

print("匿名函数".center(50,'*'))
lambda_sum = lambda a,b : a+b
print("运行结果:",sum(2,4))

def mypow(num1,num2=2):
    """
    num1的num2次方
    :param num1:
    :param num2:
    :return:
    """
    return num1**num2

print("运行结果:",mypow(2,3))
print("匿名函数".center(50,'*'))
lambda_mypow = lambda num1,num2=2 : num1**num2
print(lambda_mypow(3))

def myFun(num1, num2, fun=pow):
    print('num1=', num1, end=', ')
    print('num2=', num2, end=', ')
    print("result=", fun(num1, num2))

myFun(1, 2, lambda x, y: x + y)
myFun(1, 2, lambda x, y: x * y)
myFun(1, 2, lambda x, y: x ** y)
myFun(1, 2)

在这里插入图片描述
在这里插入图片描述
(2)、进阶----作为内置函数的参数

def pretty_show(goods):
    """
    以表格的方式友好的显示商品信息
    :param goods:
    :return:
    """
    #该模块需要自行安装 pip install prettytable
    # 导入prettytable模块里面的类PrettyTable, 并起一个别名pt
    from prettytable import PrettyTable as pt
    table = pt()  ##将实例化表哥对象
    #往表格里添加表头信息
    table.field_names = ["Name","Price","Count"]
    #依次添加每一行的商品的信息
    for good in goods:
        table.add_row(good)
    print(table) ##最终显示表格

goods = [
    #商品信息,商品价格,商品数量‘  ***注意:列表里的元素由 , 分开
    ['computer',3000,6000],
    ['iphone',6000,2500],
    ['TV',2000,5000]
]
pretty_show(goods)
# sorted方法, key:按照什么进行排序, lambda x: x[1]  x=["电脑", 5999, 100],
# reverse=True按照商品的价格进行从大到小排序
sort_goods = sorted(goods,key= lambda x:x[1] ,reverse=True)
print(sort_goods)
print("按照价格进行排序".center(50,'*'))
pretty_show(sort_goods)
print("按数量进行排序".center(50,'*'))
sort_count_goods = sorted(goods,key= lambda x:x[2] ,reverse=True)

pretty_show(sort_count_goods)

在这里插入图片描述
在这里插入图片描述

三、练习

问题描述1: 有一个整数列表(10个元素), 要求调整元素顺序,把所有的奇数放在前面,偶数放在后面,

"""
 有一个整数列表(10个元素), 要求调整元素顺序,把所有的奇数放在前面,偶数放在后面,
"""
la =[2,5,3,24,12,13,11,41,10,7]

print(sorted(la,key=lambda x : 1 if x %2== 0 else 0))

问题描述2:(2018-携程-春招题)
给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;
在原始数组上进行移动操作, 勿创建新的数组;
#输入: 数组的记录;0 7 0 2
#输出: 调整后数组的内容; 7 2 0 0

"""
给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;
在原始数组上进行移动操作, 勿创建新的数组;
#输入: 数组的记录;0 7 0 2
#输出: 调整后数组的内容; 7 2 0 0

"""
li =[0,7,0,2]
print(sorted(li,key=lambda x : 1 if x == 0 else 0))
print(li)
"""
用sort方法会改变原数组
"""
print(li.sort())
print(li)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值