lambda函数,内置map()函数及filter()函数
2024-09-06 09:07:36
8.1 lambda函数
作用及意义:
1.没必要专门定义函数,给函数起名,起到精简的效果
2.简化代码的可读性
def ds(x):
return 2 * x + 1 ds(5)
---11 g = lambda x : 2 * x + 1
g(5)
---11 def add(x,y):
return x + y add(3,4)
---7 g = lambda x,y : x + y
g(3,4)
---7
常用的内置函数(BIF函数)
① filter() ------过滤器
list (filter(None,[1,0,False,True]))
---[1, True] #把任何非True的内容给过滤掉了 #利用filter写一个奇数的过滤器
def odd(x):
return x % 2
temp = range(10)
show = filter(odd,temp)
list(show)
---[1,3,5,7,9] list (filter(lambda x : x % 2 , range(10)))
---[1,3,5,7,9] def aaa(x):
return x % 2 == 1
ret = list(filter(aaa, [1, 2, 54, 3, 6, 8, 17, 9]))
print(ret)
---[1, 3, 17, 9]
l = [15, 24, 31, 14]
def func(x):
return x > 20
print(list(filter(func,l))) print(list(filter(lambda x: x > 20, l))) # 比较两者差异
②map() -----映射
map有两个参数,一个函数,一个可迭代序列,将序列中的每一个元素作为函数参数进行运算加工,
直到可迭代序列中的每个元素加工完毕返回所有加工后的元素构成的新序列。
list(map(lambda x : x * 2, range(10)))
---[0, 2, 4, 6, 8, 10, 12, 14, 16, 18
l = [1, 2, 3, 4, 5] def pow2(x):
return x*x print(list(map(pow2, l)))
---[1, 4, 9, 16, 25]
l = [1, 2, 3, 4] def func(x):
return x*x
print(list(map(func, l))) print(list(map(lambda x : x*x, l))) # 比较两者差异
# 多个数组进行相加
li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)
print(new_list)
---[12, 24, 36] # 这里在py2中结果是这个,在py3中是一个可迭代对象,需要调用list函数
③ reduce()函数
也是存在两个参数,一个函数,一个可迭代序列,但是函数必须接收两个参数。作用是对于序列内所有元素进行累积操作
from functools import reduce # 在py2中不需要从functools中导入,但是在py3中需要,他已经不属于一个内置函数,属于一个高阶函数
lst = [11,22,33]
func2 = reduce(lambda arg1,arg2:arg1+arg2,lst)
print('func2:', func2) ---func2: 66
例题:
# 现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] # 方法一
t1 = (('a'), ('b'))
t2 = (('c'), ('d'))
print(list(zip(t1, t2))) # [('a', 'c'), ('b', 'd')]
print(list(map(lambda t: {t[0], t[1]}, zip(t1, t2)))) # [{'a', 'c'}, {'d', 'b'}] # 方法二
print(list([{i,j} for i,j in zip(t1,t2)])) # [{'a', 'c'}, {'d', 'b'}] #方法三
func = lambda t1,t2:[{i,j} for i,j in zip(t1,t2)]
ret = func(t1,t2)
print(ret) # [{'a', 'c'}, {'d', 'b'}]
最新文章
- easyui datagrid 悬浮事件
- 用MVVM做了一个保存网页的工具-上篇
- 读取NVRAM中的SN(barcode)
- 我最优惠网系列(1)——HTML 解析类库HtmlAgilityPack
- 使用Java创建RESTful Web Service
- Beaglebone Black - 准备
- Independence独立
- 安装Redis完整过程
- 【HDOJ】1160 FatMouse's Speed
- hdoj 1513 Palindrome【LCS+滚动数组】
- php5,Apache在windows 7环境搭建
- IOS 调用系统发邮件Api
- 树上点对统计poj1741(树的点分治)
- hihoCoder 1051 : 补提交卡 枚举
- 无聊的js(马赛克)
- Ubuntu如何使用Vscode写C++代码
- Android学习之AndroidStudio新建工程报Open File报错处理
- JobService相关
- 基于kubernetes集群部署DashBoard
- java语言打印上三角和下三角,进一步得到九九乘法表