python之lambda学习

1、lambda函数
lambda是一种匿名函数,没有函数名称,输入参数,输出表达式返回的结果。
lambda的语法形式如下:

lambda [args1,args2,...,argsn] : expression

常见几种传入的参数有:

lambda x,y: x*y  # 传入普通参数
lambda : False  # 不传参
lambda *args: max(args)  # 传入多个参数
lambda **kwargs: True  # 传入键值对参数
lambda a=1, b=2: a+b  # 传入默认参数

1.1 可以将lambda函数返回的结果赋值给变量。

ret = lambda *args:max(args)
print(ret(1,2,4))
# 结果如下
4

1.2 可以将lambda函数作为参数传给其他函数,结合其他函数使用

l1 = [1,2,4,5]
l2 = [6,7,8,9]
print(list(map(lambda x, y:x+y, l1, l2)))
# 结果如下
[7, 9, 12, 14]

2、map函数
map函数传参为函数和序列,根据函数对序列中的每一个元素进行操作,每次元素调用func会有一个返回值,而整个map函数返回所有返回值组成的新列表。

map(func, *iterables)

示例如下:

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

l1 = [1,2,4,5]
l2 = [6,7,8,9]

result = list(map(add, l1, l2))
print(result)
#结果如下
[6, 14, 32, 45]

map函数结合lambda使用,更能简化代码

result=list(map(lambda x, y : x*y, l1, l2)
print(result)
# 结果也是一样的
[6, 14, 32, 45]

3、filter函数
filter函数通过传入的func来过滤iterable中的元素,返回一个迭代器。我们如果要输出的话,一般用list或tuple转换。

filter(function_or_None, iterable)

如例子,

l2 = [6, 7, 8, 9]
print(list(filter(lambda x: x % 2 == 1, l2)))
# 输出结果如下
[7, 9]

4、sorted函数
sorted函数对可迭代序列进行排序操作
python 3.x中语法

sorted(iterable,key=None, reverse=False):
# iterable -- 可迭代对象。
# key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中某一个元素来进行排序。
# reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)

sort 与 sorted 区别:
根据菜鸟教程的说法(参考菜鸟教程),
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

如例子,

l2 = [6, 7, 10, 8, 9]
l2.sort()
print(l2)
# 输出l2的结果,对列表进行操作
[6, 7, 8, 9, 10]
l2 = [6, 7, 10, 8, 9]
l3 = sorted(l2,key=lambda x:x, reverse=False)
print(l3)
print(l2)
# 输出l3
[6, 7, 8, 9, 10]
# 输出l2
[6, 7, 10, 8, 9]

用sorted方法排序,生成新的列表

l5 = [('abc', 1),('df',3),('ac',2),('gh',4),('fg',2)]
re = sorted(l5,key=lambda x:x[0],reverse=True)
print(re)
#输出如下
[('gh', 4), ('fg', 2), ('df', 3), ('ac', 2), ('abc', 1)]

多个key值

l5 = [('abc', 1),('df',3),('ac',2),('gh',4),('fg',2)]
re = sorted(l5,key=lambda x:(x[0],x[1]),reverse=True)
print(re)
# 输出如下
[('gh', 4), ('fg', 2), ('df', 3), ('ac', 2), ('abc', 1)]

5、reduce函数
reduce函数对可迭代序列中的元素进行类积操作,最后返回一个值。
在python3中使用reduce函数需要从模块导入。

reduce(function, sequence, initial=None)

如例子,

from functools import reduce

def add(x,y):
    return x*y
    
l1 = [1,2,4,5]
s = reduce(add, l1)
print(s)
#输出结果
40
l1 = [1,2,4,5]
s = reduce(lambda x,y:x*10+y, l1)
print(s)
#输出结果
1245
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值