Python3.x基础学习-函数用法(三)

前言:

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

使用方法:

语法:变量名= lambda 参数:表达式

注意:
1.表达式中不能包含 循环,return
2.可以包含 if...else...语句.
3.表达式计算的结果直接返回"""

#1.创建匿名函数,无参数

x = lambda :3<2
print(x)
# <function <lambda> at 0x00000153EA9E2EA0>
print(x())
# False

#2.传递多个参数
#计算两个参数的和

ret = lambda x,y:x+y
print(ret(5,10))
# 15

#返回参数中较小的那个数
# def func(x,y):
#     if x<y:
#         return x
#     else:
#         return y
# print(func(3, 5))
#改为匿名函数

ret = lambda x,y:x if x<y else y
print(ret(1,2))
# 1

#使用max()函数求字典的最大值
dic = {'k1':10,'k2':30,'k3':20}
# def func(k):
#     return dic[k]
# print(max(dic,key=func))

ret = max(dic,key=lambda k:dic[k])
print(ret)
# k2

#使用max()函数,找出年龄最大的那组信息
lst = [
    [1001,'zs',20], #学号,姓名,年龄
    [1002,'ss',25],
    [1003,'ww',28],
]

print(max(lst,key= lambda x:x[:][2]))
# [1003, 'ww', 28]


#求列表中每个元素的平方值
lst = [1,2,3]

lst1 = [1,2,3,4,5,6,7,8]
lst2 = [2,3,4,5,6]

print(list(map(lambda x:x*x,lst)))
# [1, 4, 9]
print(list(map(lambda x,y:x*y,lst1,lst2)))
# [2, 6, 12, 20, 30]

#过滤列表中的所有奇数
lst = [1,2,3,4,0,5,6,7,8,9]

print(list(filter(lambda x:x%2==1 ,lst)))
# [1, 3, 5, 7, 9]

tup1 = ('a','b')
tup2 = ('c','d')
# #生成[{'a':'c'},{'b':'d'}]
#使用zip()变为元组(a,c),(b,d)
#定义匿名函数将传递的参数组成字典
#使用map()变为字典
#讲map()对象转化为列表

print(list(zip(tup1,tup2)))
# [('a', 'c'), ('b', 'd')]

print(list(map(lambda x:{x[0]:x[1]},zip(tup1,tup2))))
# [{'a': 'c'}, {'b': 'd'}]


def func():
    x = 4
    def action(n):
        print(x**n)
    return action #返回的是函数的引用,并没有调用函数
ret = func() #此时ret是函数action的引用
ret(2)
# 16

# 将action改为匿名函数

def func():
    x=4
    return lambda n:x**n
print(func()(2))

#传递默认参数
def func():
    x = 4
    def action(n,x1=x):
        print(x1**n)
    return action #返回的是函数的引用,并没有调用函数
ret = func() #此时ret是函数action的引用
ret(2)
# 16


def func():
    x=4

    return lambda n,x1=x:x1**n

print(func()(2))
# 16

def makeAction():
    acts=[]
    for i in range(5):
        acts.append(lambda x:i**x)
    return acts

x = makeAction()
print(x[4](3))
# 64
 
原文地址:https://www.cnblogs.com/johnsonbug/p/12701447.html