博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lambda函数,内置map()函数及filter()函数
阅读量:5322 次
发布时间:2019-06-14

本文共 2139 字,大约阅读时间需要 7 分钟。

8.1 lambda函数

作用及意义:
 1.没必要专门定义函数,给函数起名,起到精简的效果
 2.简化代码的可读性
def ds(x):    return 2 * x + 1ds(5)---11g = lambda x : 2 * x + 1                                      g(5)---11def add(x,y):    return x + yadd(3,4)---7g = lambda x,y : x + yg(3,4)---7

 常用的内置函数(BIF函数)

① 
filter()     ------过滤器
list (filter(None,[1,0,False,True]))---[1, True]             #把任何非True的内容给过滤掉了#利用filter写一个奇数的过滤器def odd(x):    return x % 2temp = 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 == 1ret = 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 > 20print(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*xprint(list(map(pow2, l)))---[1, 4, 9, 16, 25]
l = [1, 2, 3, 4]def func(x):    return x*xprint(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'}]

 

转载于:https://www.cnblogs.com/LearningOnline/p/8463914.html

你可能感兴趣的文章
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
关于 linux 的 limit 的设置
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
vim中文帮助教程
查看>>
MySQL基础3
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>