map(), reduce(), filter()分析比较

1.map()函数!

  1. 系统内置函数。
  2. 格式 map(function,iterable…)
    参数1: function,函数,参数的个数与后面序列的个数保持一致!
    参数2: iterable,一个或多个序列。
    功能:将传入的函数依次作用于序列中的每一个元素,并把结果作为迭代器返回。
    重点:经测试,一点要求:正常情况序列的个数必须要等于函数参数的个数!
    特殊情况:序列中有‘空’时,结果为空!(此时并不判断是否参数个数和序列个数一致!)

测试过程:

def add(x, y, z):
return x+y+z

a = map(add, [1,1,1], [2,2,2], [3,3,3])
print(list(a))
结果:[6,6,6]

a = map(add, [1,1,1], [2,2,2], [3,3,3], [4,4,4])  
结果:TypeError: add() takes 3 positional arguments but 4 were given实参多了

a = map(add, [1,1,1],[2,2,2])   # 序列个数小于参数个数
结果:TypeError: add() missing 1 required positional argument: 'z'确少实参z

a = map(add, [1,1,1], [2,2,2], [3])		# 列表长度不一样,以短的为主计算
结果:[6]

a = map(add, [1,1,1], [])   # 存在空时,无论几个序列最终结果都为空!!
a = map(add, [1],[2],[3],[4],[])
结果都是:[]

用法总结:

  1. 序列有空:判断序列中是否有为空的情况,有空时,结果必为空

  2. 序列无空:函数参数个数与序列的个数保持一致!

    留意:取字典的键值
    gen3 = map(lambda x:int(x),{‘1’:10,‘2’:20})
    print(list(gen3)) #[1,2]

2.reduce函数

  1. functools模块函数 from functools import reduce
  2. 格式 reduce(f, iterable[, initializer])
    参数1:f 函数,这个函数必须两个参数
    参数2:可迭代对象
    参数3:可选, 是默认值,序列为空时,则使用默认值
    返回值:f 函数计算的结果值
    功能:可以对可迭代对象进行过滤,去除不满足条件的元素

将列表转换成整数

print(reduce(lambda x, y: x+y, [1, 2, 5, 7]))    #1257

print(reduce(lambda x, y: x+y, [], 6))    #6   当传入[]空,使用默认值

3.filter

  1. 内置函数

  2. 格式:filter(function, iterable)
    参数1:function 函数,迭代器元素传入,为真的保留,为假的去除
    参数2:iterable可迭代对象
    返回值: 一个新的迭代器或迭代对象!
    功能:对可迭代元素起到过滤作用!

    a = filter(lambda x: isinstance(x, str), [1, 3, 5, ‘asd’, 5])
    print(next(a)) 去除列表中的非字符串数据
    等价于[s for s in [1, 3, 5, ‘and’, 5] if isinstance(s, str)]

判断回文数:

def is_palindorme(n):
l1 = list(str(n))    # 数字转换成字符串列表
l2 = l1[::-1]
if l1 == l2:
    return True
return False

4. sorted

  1. sorted是内建函数,用于对有序序列进行排序,生成一个新序列
  2. 格式: sorted(iterable[, key] [, reverse] )
    参数:iterable 要排序的对象, 可迭代
    key 是一个函数,作用于序列的每个元素,根据函数返回值排序。
    函数的参数就取自于可迭代对象中。
    reverse 默认从小到大排序,为Ture则从大到小排序!
    返回值:新的序列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值