【python笔记】高阶函数map、filter、reduce

简介: 【python笔记】高阶函数map、filter、reduce

前言

map()reduce()filter()是python的三个高阶函数。所谓高阶函数,指的是将函数作为参数并返回函数作为结果的函数。下面代码的sing_ready只是一个简单高阶函数示例:

def ready(name):
    return f"ready,{name}!"
def sing_ready(f,n):
    print(f(n))
sing_ready(ready,"freddie")
# ready,freddie!

map函数

map()函数接收一个函数和一系列可迭代对象作为参数,并将函数作用于可迭代对象中的每个元素后输出。示例如下:

# 语法:map(函数,可迭代对象)
def f1(a:int) -> int:
    return a*a
print(list(map(f1,[i for i in range(10)])))
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

也可以使用lambda匿名函数实现相同功能

print(list(map(lambda x:x*x,[i for i in range(10)])))
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

filter函数

filter()函数,顾名思义,具有”筛选“功能,用于生成在调用其它函数时返回为true的值的列表。示例如下:

# 语法:filter(函数,可迭代对象)
# 筛选偶数
def f2(a:int) -> int:
    return a%2 == 0
    
print(list(filter(f2,[i for i in range(10)])))
# [0, 2, 4, 6, 8]
# 或使用lambda匿名函数
print(list(filter(lambda x: x%2==0,[i for i in range(10)])))
# [0, 2, 4, 6, 8]

reduce函数

reduce,意”减少“。reduce(function,iterable)iterable中每个元素以及上一次调用的返回结果,调用function进行处理。

在python2中,reduce()是内置函数。在python3中,需要from functools import reduce

示例:

from functools import reduce
print(reduce(lambda a,b:a+b, [i for i in range(6)]))
# 15
## 0 + 1 + 2 + 3 + 4 + 5 = 15
相关文章
|
2月前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
WK
|
5月前
|
Python
Python中format_map()方法
在Python中,`format_map()`方法用于使用字典格式化字符串。它接受一个字典作为参数,用字典中的键值对替换字符串中的占位符。此方法适用于从字典动态获取值的场景,尤其在处理大量替换值时更为清晰和方便。
WK
202 36
|
6月前
|
搜索推荐 Python
Leecode 101刷题笔记之第五章:和你一起你轻松刷题(Python)
这篇文章是关于LeetCode第101章的刷题笔记,涵盖了多种排序算法的Python实现和两个中等难度的编程练习题的解法。
59 3
|
6月前
|
算法 C++ Python
Leecode 101刷题笔记之第四章:和你一起你轻松刷题(Python)
这篇博客是关于LeetCode上使用Python语言解决二分查找问题的刷题笔记,涵盖了从基础到进阶难度的多个题目及其解法。
55 0
|
6月前
|
算法 C++ Python
Leecode 101刷题笔记之第三章:和你一起你轻松刷题(Python)
本文是关于LeetCode算法题的刷题笔记,主要介绍了使用双指针技术解决的一系列算法问题,包括Two Sum II、Merge Sorted Array、Linked List Cycle II等,并提供了详细的题解和Python代码实现。
52 0
|
6月前
|
算法 C++ 索引
Leecode 101刷题笔记之第二章:和你一起你轻松刷题(Python)
本文是关于LeetCode 101刷题笔记的第二章,主要介绍了使用Python解决贪心算法题目的方法和实例。
45 0
|
6月前
|
并行计算 Python
Python错误笔记(一):CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up env
这篇文章讨论了CUDA初始化时出现的未知错误及其解决方案,包括重启系统和安装nvidia-modprobe。
884 0
|
6月前
|
存储 开发工具 Python
【Python项目】外星人入侵项目笔记
【Python项目】外星人入侵项目笔记
76 3
使用 entrySet 遍历 Map 类集合 KV
使用 entrySet 遍历 Map 类集合 KV
|
7月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用