python中常用的高阶函数

⛳目录

  • filter
  • map
  • reduce

🧩filter功能

  • 对循环根据过滤条件进行过滤并生成迭代器

🎈filter用法

Python内建的filter()函数用于过滤序列,和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

  • 用法:

    • filter(func, list)
  • 参数介绍:

    • func: 对list每个item进行条件过滤的定义
    • list :需要过滤的列表
  • filter举例:
    res = filter(lambda x:x >1,[0,1,2])

  • 返回值:
    <filter at Ox4f3af70>->[2]

🎈map

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
map() 函数可以传入一个或多个序列作为参数。它将一个或多个序列中对应位置的元素传递给指定的函数进行处理,并返回一个包含处理结果的迭代器。

  • map() 函数的基本语法如下:

  • map(function, *iterables)

  • 参数说明:

  • function:用于处理每个元素的函数。

  • iterables:一个或多个序列,可以是列表、元组、集合等可迭代对象。

  • map() 函数传入多个序列时,它会依次从这些序列中取出对应位置的元素,并将它们作为参数传递给指定的函数进行处理。如果传入的序列长度不一致,map() 函数会以最短的序列长度为准,多余的元素会被忽略。

  • 举例:
    res = map(lambda x:x > 1,[0,1,2])

  • 返回值:
    <map at 0x4f3af70>->[False, False,True]

🎈reduce

  • 对循环前后两个数据进行累加(必须接收两个参数)
  • 用法∶
    reduce(func, list)
  • 参数介绍:
    func:对数据累加的函数
    list :需要处理的列表
  • 举例:
    res =reduce(lambda x,y:x +y,[0,1,2])
  • 返回值:
    数字->3

🧩reduce的导入

from functools import reduce

🎯实战

# coding: utf-8

from functools import reduce

fruits = ['apple', 'banana', 'orange']

# filter
result = filter(lambda x: ('e' in x), fruits)
print(list(result))
print(fruits)

# filter with function
def filter_func(item):
    if 'e' in item:
        return True

print('================================')
filter_result = filter(filter_func, fruits)
print(list(filter_result))

# map
map_result = map(lambda item: 'e' in item, fruits)
print(list(map_result))

# reduce
reduce_result = reduce(lambda x, y: x * y, [1, 2, 3, 4, 5, 6, 7, 8])
print(reduce_result)

reduce_result = reduce(lambda x, y: x + y, fruits)
print(reduce_result)
['apple', 'orange']
['apple', 'banana', 'orange']
================================
['apple', 'orange']
[True, False, True]
40320
applebananaorange

进程已结束,退出代码0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DevGeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值