python基础之匿名函数介绍

目录
  • 前言
  • 一、创建一个匿名函数:
  • 二、创建一个带参数的匿名函数
  • 三、求两个数的中的最大的值
  • 四、练习题:

前言

在定义函数的时候,不想给函数起一个名字。这个时候就可以用lambda来定义一个匿名函数

语法:

变量名= lambda 参数:表达式(block)

参数:可选,通常以逗号分隔的变量表达式形式,也就是位置参数

表达式:不能包含循环、return,可以包含if…else…

注意:

1.表达式中不能包含 循环,return.可以包含 if…else…语句.

2.参数可有可无,如果有多个参数,使用逗号隔开

3.表达式计算的结果直接返回

一、创建一个匿名函数:

func = lambda: 3 > 2
ret = func()  # 调用匿名函数,变量名(),使用变量ret来接收表达式返回的内容
print(ret)     #True
def func():
    return 3 > 2
ret = func()
print(ret)   #True
# 和func=lambda :3>2  等价

运行结果:

True
True

二、创建一个带参数的匿名函数

def func(x, y):
    return x + y
ret = func(1, 2)
print(ret)    #3
#匿名函数
func = lambda x, y: x + y
ret = func(1, 2)  # 如果匿名函数有参数,调用匿名函数的时候需要传递实参。
print(ret)    #3

三、求两个数的中的最大的值

def func(x, y):
    if x < y:
        return y
    else:
        return x
ret = func(30, 20)
print(ret)      #30
#匿名函数
func = lambda x, y: y if x < y else x
# 注意if和else 没有 : 不能换行,if判断体写在判断条件前面
ret = func(11, 2)
print(ret)    #11
func = lambda x, y: y if x < y else x

四、练习题:

1.将add()方法改成匿名函数

def add(x, y):
    return x + y

func = lambda x, y: x + y
ret = func(1, 2)
print(ret)      # 3

2.使用 max函数求字典的最大值

dic = {'k1': 10, 'k2': 200, 'k3': 20}
ret = max(dic)  # 默认比较的是字典的key的大小。ASCII对于的十进制
print(ret)     # k3
def func(key):
    return dic[key]
ret = max(dic, key=func) # 改变比较规则,用value比较大小,最终返回的函数是字典的key值
print(ret)    #  k2

使用匿名函数
ret = max(dic, key=lambda x: dic[x])
print(ret)     #k2

3、根据列表中字典‘name'对应的valuez值进行比较

 lst = [
        {'name': 'egon', 'price': 100},
        {'name': 'rdw', 'price': 666},
        {'name': 'zat', 'price': 1}
    ]
    # ret = max(lst)  # 报错,字典之间不能比较。
    # print(ret)
    def max_name(dic):
        return dic['name']  # 返回 字典 name对应的值
    ret = max(lst, key=max_name)  # 指定比较内容
    print(ret)
    使用匿名函数进行比较:
    ret = max(lst, key=lambda dic: dic['name'])  # 指定比较内容
    print(ret)

运行结果:

{'name': 'zat', 'price': 1}
{'name': 'zat', 'price': 1}

同理可以根据列表中字典‘price'对应的valuez值大小进行比较

    lst = [
        {'name': 'egon', 'price': 100},
        {'name': 'rdw', 'price': 666},
        {'name': 'zat', 'price': 1}
    ]
    def max_price(dic):
        return dic['price']  # 返回 字典 price 的值
        匿名函数:
    ret = max(lst, key=lambda dic: dic['price'])  # 指定比较内容 100,666,1
    print(ret)    #{'name': 'rdw', 'price': 666}

4、求 lst 中每一个元素的平方值

lst = [1, 3, 4]
def square(num):
    num2 = num * num
    return num2
ret = map(square, lst)  # 迭代器 1,4,16
for i in ret:
    print(i)     #  1,9,16
    匿名函数:
ret = map(lambda num: num * num, lst)
for i in ret:
    print(i)   #  1,9,16

5.过滤出列表中的所有奇数:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def odd(num):
    if num % 2 == 1:
        return True
    else:
        return False
ret = filter(odd, lst)
print(list(ret))      #[1, 3, 5, 7, 9]
# 匿名函数:
ret = filter(lambda num: True if num % 2 == 1 else False, lst)
print(list(ret))     #[1, 3, 5, 7, 9]

6、现有两个元组((‘a'),(‘b')),((‘c'),(‘d')),请使用python中匿名函数生成列表[{‘a':‘c'},{‘b':‘d'}]

tup1 = (('a'), ('b'))
tup2 = (('c'), ('d'))
# [{'a':'c'},{'b':'d'}]
ret = zip(tup1, tup2)  #(('a','c'),('b','d'))
def func(tup):
    #('a','c')  ('b','d')
    return {tup[0],tup[1]}
ret1=map(func,ret)
print(list(ret1))    #[{'a': 'c'}, {'b': 'd'}]
# 匿名函数:
ret2 = list(map(lambda tup: {tup[0]: tup[1]}, ret))
print(ret2)     #[{'a': 'c'}, {'b': 'd'}]

到此这篇关于python基础之匿名函数介绍的文章就介绍到这了,更多相关python匿名函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-12-13

python基础之匿名函数详解

目录 1.匿名函数介绍 2.语法 3.使用场景 4.匿名函数和普通函数的对比 5.匿名函数的多种形式 6.lambda 作为一个参数传递 7. lambda函数与python内置函数配合使用 8.lambda 作为函数的返回值 1.匿名函数介绍 匿名函数指一类无须定义标识符的函数或子程序.Python用lambda语法定义匿名函数,只需用表达式而无需申明. 在python中,不通过def来声明函数名字,而是通过 lambda 关键字来定义的函数称为匿名函数. lambda函数能接收任何数量(可以

python匿名函数的实例用法

一般情况下,lambda就像是一个函数简化器,它允许在所用代码中嵌入函数的定义.它们完全是可选的(一直都可以使用def替换它们),但只需嵌入少量可执行代码,就能使代码结构更加简洁,从而大大简化代码复杂性,提高代码可读性. 1.优点 (1)减少重复代码: (2)模块化代码. 2.实例 # def函数 def square(x): return x**2 squared = map(square, [1, 2, 3, 4, 5]) # lambda函数 squared = map(lambda x:

python基础之引用和匿名函数

a=1 #1 为对象, def func(x): print('x的地址{}'.format(id(x))) x=2 print('x的地址{}'.format(id(x))) pass # 调用函数 print('a的地址:{}'.format(id(a))) func(a) # 不可变类型 a=1 #1 为对象, ##传递的是一个对象的引用,并不是一个值 def func(x): print('x的地址{}'.format(id(x))) x=2 print('x的地址{}'.format(

Python技巧匿名函数、回调函数和高阶函数

目录 1.定义匿名或内联函数 2.在匿名函数中绑定变量的值 3.让带有n个参数的可调用对象以较少的参数调用 4.在回调函数中携带额外的状态 1.定义匿名或内联函数 如果我们想提供一个短小的回调函数供sort()这样的函数用,但不想用def这样的语句编写一个单行的函数,我们可以借助lambda表达式来编写"内联"式的函数. 如下图所示: add = lambda x, y: x + y print(add(2, 3)) # 5 print(add("hello", &

Python匿名函数详情

1.匿名函数 在python中,除了一般使用def定义的函数外,还有一种使用lambda定义的匿名函数.这种函数可以用在任何普通函数可以使用的地方,但在定义时被严格限定为单一表达式.从语义上讲,它只是普通函数的语法糖. 如果我们需要定义一个特别简单的函数,例如 def add(a, b):     s = a + b     return s 这就出现问题了,这么优雅的Python怎么可以出现这种难看的代码呢,有没有办法可以将其简化为1行代码呢?这么优雅的Python肯定有办法将其简化的方法啊!

Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): return n**n print(func(10)) f = lambda n: n**n print(f(10)) lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数 语法: 函数名 = lambda 参数: 返回值 注意: 1. 函数的参数可以有多个. 多个参数之间用逗号隔开 2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据 3

python匿名函数用法实例分析

本文实例讲述了python匿名函数用法.分享给大家供大家参考,具体如下: 匿名函数特点: 1.只能有一个表达式 2.不用return,默认return结果 3.不需要名字,防止函数名重复 4.是对象,可赋值给一个变量 经典例子 >>> map(lambda x : x*x, [2, 4, 8, 9]) [4, 16, 64, 81] python匿名函数lambda格式: lambda 参数(可以有默认值) : 表达式 # 无参 >>> lambda : 'hello

Python匿名函数及应用示例

本文实例讲述了Python匿名函数及应用.分享给大家供大家参考,具体如下: lambda关键词能创建?型匿名函数.这种函数得名于省略了def声明函数的标准步骤. 代码如下: #定义lambda函数 sum = lambda arg1,arg2:arg1+arg2 #调用函数 totle = sum(3,5) print ('totle = %d'%totle) 运行如下 totle = 8 Lambda函数能接收任何数量的参数但只能返回一个表达式的值 匿名函数不能直接调用print,因为lamb

详解Python匿名函数(lambda函数)

匿名函数lambda Python使用lambda关键字创造匿名函数.所谓匿名,意即不再使用def语句这样标准的形式定义一个函数.这种语句的目的是由于性能的原因,在调用时绕过函数的栈分配.其语法是: lambda [arg1[, arg2, ... argN]]: expression 其中,参数是可选的,如果使用参数的话,参数通常也会在表达式之中出现. 下面举例来说明lambda语句的使用方法(无参数). # 使用def定义函数的方法 def true(): return True #等价的l

python匿名函数lambda原理及实例解析

这篇文章主要介绍了python匿名函数lambda原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 #-*- coding:utf-8 -*- #__author__ = "www.iplaypy.com" # 普通python函数 def func(a,b,c): return a+b+c print func(1,2,3) # 返回值为6 # lambda匿名函数 f = lambda a,b,c:a+b+c

python匿名函数的使用方法解析

一.lambda关键字的使用方法 func=lambda x:x+1 print(func(1)) #2 print(func(2)) #3 #以上lambda等同于以下函数 def func(x): return(x+1) 注释:可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体.在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. 二.Python中,也有几个定义好的全局函数方便使用的,filt

举例讲解Python的lambda语句声明匿名函数的用法

所谓匿名函数,即是不需要定义函数,像表达式一样使用,不需要函数名(很多时候名字让我很困扰),一些简单的函数简单化, 举个例子 我需要两个整数相加的函数,通常是这么定义的 def add(x, y): return x + y 很好的完成了我需要的功能, 但是我现在需要一个数字与字符串相加的函数 def addstr(x, y): return x + str(y) 又一次完成了我的需求,但是 我突然需要两个整数相减,相除的功能这样函数就得 一直写下去, 但是使用lambda 匿名函数可以直接使用

什么是Python中的匿名函数

匿名函数 lambda x , y : x+y 1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的. 2.匿名函数的参数规则.作用域关系与有名函数是一样的. 3.匿名函数的函数体通常应该是 一个表达式,该表达式必须要有一个返回值. f=lambda x,n:x ** n print(f(2,3)) lambda匿名函数的应用:**max,min,sorted,map,reduce,filter** 求工资最高的人:max salaries={ 'egon':3000, 'alex'

Python的lambda匿名函数的简单介绍

lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: 复制代码 代码如下: def f(x):return x**2print f(4) Python中使用lambda的话,写成这样 复制代码 代码如下: g = lambda x : x**2print g(4) lambda表达式在很多编程语言都有对应的实现.比如C#: 复制代码 代码如下: var g = x => x**2Console.WriteLine(g(4)) 那么,lambda表达式有什么用处呢?很多人提

python基础教程之匿名函数lambda

 python lambda 当我们在使用函数时,有时候,并不需要显示的定义一个函数,我们可以使用匿名函数更加方便,在Python中对匿名函数也提供了支持. 比如当我们想计算两个数a,b之和时,即f(a,b) = a + b.我们可以有两种方法完成,第一种就是显示的定义一个函数f(x,y),然后将参数传进去得到结果.第二种方式就是使用匿名函数了. f = lambda x,y:x+y >>>f(1,2) 3 匿名函数lambda x,y:x+y实际上就是: def f(x, y): re