一、map函数

处理序列(可迭代对象)中的每一个元素,得到的结果是一个‘列表’(其实是个迭代器),该‘列表’元素个数及位置与原来一样

理解下面这段代码:

num_l = [1, 2, 4, 6]
def add_one(x):
return x + 1 #定义一个自加1的函数
def map_test(func, array):
ret = []
for i in array:
res = func(i)
ret.append(res)
return ret print(map_test(add_one, num_l))
print(map_test(lambda x:x + 1, num_l))  #这样更好

用map函数实现

num_l = [1, 2, 4, 6]
print(list(map(lambda x:x + 1,num_l))) #map函数得到的是可迭代对象,需要用list方法处理一下

map函数也可以传入自定义函数

num_l = [1, 2, 4, 6]
def add_one(x):
return x + 1 #定义一个自加1的函数
print(list(map(add_one,num_l)))

用map函数处理字符串

msg = "dabai"
print(list(map(lambda x: x.upper(), msg)))

二、filter函数

filter遍历序列中的每个元素,判断每个元素得到布尔值,如果是Ture则保留下来

理解下面代码:

movie_people = ['sb_123', 'sb_456', 'sb_789', 'dabai']
def filter_test(func, array):
ret = []
for i in movie_people:
if not func(i):
ret.append(i)
return ret
res = filter_test(lambda x: x.startswith('sb'), movie_people) #想把函数运行的结果保存下来就用变量接收,方便下面使用
print(res)

filter内也能自定义函数

movie_people = ['sb_123', 'sb_456', 'sb_789', 'dabai']
def sb_show(x):
return x.startswith('sb')
def filter_test(func, array):
ret = []
for i in array:
if not func(i):
ret.append(i)
return ret
res = filter_test(sb_show, movie_people) #想把函数运行的结果保存下来就用变量接收,方便下面使用
print(res)

用filter函数实现

movie_people = ['sb_123', 'sb_456', 'sb_789', 'dabai']
print(list(filter(lambda x: not x.startswith('sb'), movie_people)))

用filter处理字典

people = [
{'name':'alex','age':10000},
{'name':'dabai','age':18},
{'name':'sb','age':90000}
]
print(list(filter(lambda x: x['age'] <= 18, people)))

三、reduce函数

处理一个序列,然后把序列进行合并操作

理解下面代码

num_l = [1, 2, 3, 100]
def reduce_test(func, array):
res = array.pop(0)
for num in array:
res = func(res, num)
return res print(reduce_test(lambda x, y : x * y,num_l)) #把列表里的值相乘

可以设置一个默认的初始值

num_l = [1, 2, 3, 100]
def reduce_test(func, array, init = None):
if init is None:
res = array.pop(0)
else:
res = init
for num in array:
res = func(res, num)
return res print(reduce_test(lambda x, y : x * y,num_l, 100)) #把列表里的值相乘

使用reduce函数,要先引入functools模块

num_l = [1, 2, 3, 100]
from functools import reduce
print(reduce(lambda x,y : x * y, num_l, 100))

from functools import reduce
print(reduce(lambda x,y : x + y, range(1,101)))

最新文章

  1. UWP简单示例(三):快速开发2D游戏引擎
  2. windows下登录lunix服务器
  3. C# 通过反射类动态调用DLL方法
  4. php组合
  5. Hark的数据结构与算法练习之煎饼排序
  6. 构建千万级web访问架构
  7. 收录一个简单的css类库
  8. JavaScript要点 (二) 使用误区
  9. js获取图片高度
  10. 扩展欧几里德 POJ 1061
  11. [LeetCode] 147. Insertion Sort List 解题思路
  12. Android Canvas设置绘画时重叠部分的处理模式【含效果图】
  13. 深入理解C指针之二:C内存管理
  14. switchery按钮使用
  15. Hibernate之缓存
  16. LeetCode算法题-Implement Queue Using Stacks(Java实现)
  17. 关于解决Python中requests模块在PyCharm工具中导入问题
  18. R和Tableau平行坐标图
  19. selenium 模拟手机
  20. REST构架风格介绍:状态表述转移(转)

热门文章

  1. Spring之ApplicationContext
  2. Flask学习之旅--简易留言板
  3. Spring_two
  4. Oracle数据库视图的创建以及使用
  5. Go语言之从0到1实现一个简单的Redis连接池
  6. Spark学习之路(二)—— Spark开发环境搭建
  7. Programming In Lua 第一章
  8. 渐进式web应用开发---service worker (二)
  9. 关于ArrayList的扩容机制
  10. redux和react-redux做简单组件控制