Python函数式编程

server/2024/9/23 23:17:36/

Python函数式编程内容不多,熟练使用它们能让代码简洁不少。

Python中的函数式编程强调使用函数作为基本构建块,支持高阶函数、 lambda函数、列表推导式、map()、filter()、reduce()等特性。下面是一些函数式编程的典型例子:

  1. 使用 map() 函数

map() 函数接受一个函数和一个可迭代对象(如列表),并将该函数依次应用于可迭代对象的每个元素。

python

python">numbers = [1, 2, 3, 4, 5]squared = map(lambda x: x**2, numbers)  # 使用lambda函数计算每个元素的平方print(list(squared))  # 输出: [1, 4, 9, 16, 25]
  1. 使用 filter() 函数

filter() 函数用于过滤序列,通过函数确定哪些元素应该保留在序列中。

python

python">numbers = [1, -2, 3, -4, 5]positive_numbers = filter(lambda x: x > 0, numbers)  # 筛选出正数print(list(positive_numbers))  # 输出: [1, 3, 5]
  1. 使用 reduce() 函数(需要从 functools 导入)

reduce() 函数对一个序列的元素累积应用某个函数,从左到右,因此最终结果只返回一个值。

python">from functools import reducenumbers = [1, 2, 3, 4, 5]sum_of_numbers = reduce(lambda x, y: x + y, numbers)  # 计算数字总和print(sum_of_numbers)  # 输出: 15
  1. 列表推导式

列表推导式提供了一种简洁的创建新列表的方法,基于现有列表的每个元素应用一些操作。

python">numbers = [1, 2, 3, 4, 5]squares = [x**2 for x in numbers]  # 计算每个数字的平方print(squares)  # 输出: [1, 4, 9, 16, 25]
  1. 高阶函数:函数作为参数

函数式编程允许函数作为另一个函数的参数,这在处理数据时非常灵活。

python">def apply_operation(operation, numbers):return [operation(x) for x in numbers]def add_five(x):return x + 5result = apply_operation(add_five, [1, 2, 3])print(result)  # 输出: [6, 7, 8]

这些例子展示了Python函数式编程的核心概念,通过这些技术可以编写出更加简洁、易读且易于维护的代码。


http://www.ppmy.cn/server/47834.html

相关文章

计算机网络——传输层

目录 传输层概述 传输层 常见协议的端口号 FTP:21(20)* TELNET:23* SMTP:25* DNS:53* TFTP:69* HTTP:80* SNMP:161* HTTPS:443* 传输层的两个重要…

深度神经网络——什么是梯度提升?

在数据科学竞赛中,梯度提升模型(Gradient Boosting)是一种非常强大的工具,它能够将多个弱学习模型组合起来,形成一个强学习模型。这个过程是通过逐步添加弱学习者来实现的,每个新加入的弱学习者都专注于当前…

实验9 静态路由配置

实验9 静态路由配置 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 网络中的每个路由器都会维护一张路由表或转发表。路由表的表项记录着目的网络信息以及下一跳I 地址。路由表可以手动配置,也可以通过路由算法动态生成。静态…

MATLAB分类与判别模型算法: 快速近邻法(FastNN)分类程序【含Matlab源码 MX_005期】

算法思路介绍: 1. 数据准备阶段: 生成一个合成数据集 X,其中包含三个簇,每个簇分布在不同的区域。 定义聚类层数 L 和每个层次的子集数量 l。 2. 聚类阶段: 使用K均值聚类算法将初始数据集 X 分成 l 个簇。…

计算机系统基础知识-经典题目

【第1题】 对计算机评价的主要性能指标有时钟频率、 (1) 、运算精度和内存容量等。对数据库管理系统评价的主要性能指标有 (2) 、数据库所允许的索引数量和最大并发事务处理能力等。 (1) A.丢包率 B.端口吞吐量 C.可移植性 D.数据处理速率 (2) A.MIPS B.支持协议和标准 C.最大…

ubuntu使用Docker笔记

一、参考资料 1、B站视频 尚硅谷Docker实战教程 2、有心人整理的笔记 Docker笔记(周阳版) 3、菜鸟教程 Docker 教程 以下是本人的折腾实践。 二、Docker的安装 2.1、使用清华源安装docker,清华源官方教程。 本人是在ubuntu20.04下安装的…

flink Transformation算子(更新中)

flink Transformation算子部分 Transformation算子 map 该方法是将一个DataStream调用map方法返回一个新的DataStream。本质是将该DataStream中对应的每一条数据依次迭代出来,应用map方法传入的计算逻辑,返回一个新的DataStream。原来的DataStream中对…

[12] 使用 CUDA 加速排序算法

使用 CUDA 加速排序算法 排序算法被广泛用于计算应用中有很多排序算法,像是枚举排序或者说是秩排序、冒泡排序和归并排序,这些排序算法具有不同的(时间和空间)复杂度,因此对同一个数组来说也有不同的排序时间,对于大数组而言,可能会很耗时如果排序算法能用 CUDA 加速,则…