python常用高阶函数

map函数

  • map(function, iterable1[, iterable2, …])
    map() 是 Python 内置的高阶函数,它用于将一个或多个可迭代对象(如列表、元组、字符串等)中的每个元素按照指定的函数进行处理,并返回一个迭代器(iterator),其生成结果为经过函数映射后的元素序列。

    function: 必需参数,指定应用于每个元素的函数。它可以是用户定义的函数、内置函数、或者使用 lambda 表达式创建的匿名函数。
    iterable1, iterable2, …: 可选参数,一个或多个可迭代对象。map() 将对这些对象中对应的元素逐个应用
    注:当提供多个可迭代对象时,它们的长度必须相等,function 将按位置分别接收每个可迭代对象对应位置的元素作为参数。

    返回值
    map() 函数返回一个迭代器对象。通过迭代(使用 for 循环、list() 函数、tuple() 函数等)可以获取映射结果的实际序列。

vec = [1, 2, 3, 4, 5]
print(list(map(lambda v: str(v), vec)))
# ['1', '2', '3', '4', '5']

numbers1 = [10, 20, 30]
numbers2 = [5, 6, 7]
products = list(map(lambda x, y: x * y, numbers1, numbers2))
print(products)
# [50, 120, 210]

filter函数

  • filter(function, iterable)

    filter() 是 Python 内置的高阶函数,用于对一个可迭代对象(如列表、元组、字符串等)进行筛选,保留那些使指定函数返回值为True的元素,并返回一个迭代器(iterator),其中包含筛选后的元素序列。

even_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 保留为True的结果
even_filter = filter(lambda x: x % 2 == 0, even_numbers)
print(list(even_filter))
# [2, 4, 6, 8, 10]

zip函数

  • zip()
    将多个可迭代对象的元素打包成一个元组,返回一个迭代器。当各个可迭代对象长度不一致时,以最短的对象为准。
str_list = ["one", "two", "three"]
num_list = [1, 2]
ret = zip(str_list, num_list)  # 不会报错,直接结束
print(dict(ret))
# {'one': 1, 'two': 2}

str_list = ["one", "two", "three"]
num_list = [1, 2, 3]
for i in zip(str_list, num_list):
    print(i)  # ('one', 1)
ret_list = list(zip(str_list, num_list))
ret_dict = dict(zip(str_list, num_list))
print(ret_list)
# [('one', 1), ('two', 2), ('three', 3)]
print(ret_dict)
# {'one': 1, 'two': 2, 'three': 3}

numbers1 = [10, 20, 30]
for index, value in enumerate(numbers1):
    print(index, "=", value)

for index, value in enumerate(numbers1, start=1):  # 自定义index
    print(index, "=", value)

sorted函数

  • sorted(iterable, *, key=None, reverse=False)
    接收一个可迭代对象,返回一个排序后的列表。可选参数 key 指定一个函数,用于提取每个元素用于排序的值;reverse 参数为 True 时,表示降序排列。

    iterable:必选参数,指定要排序的可迭代对象。它可以是任何可迭代的数据结构,如列表、元组、字符串、字典视图(如 .keys()、.values() 或 .items())、文件对象、生成器表达式等。
    key:可选参数,用于指定一个函数(或可调用对象),该函数接收一个元素作为参数,并返回一个值作为排序依据。sorted 函数会根据这个返回值对元素进行排序。如果不指定 key,则默认按元素本身的值进行比较排序。
    reverse:可选参数,布尔类型,表示是否逆序排列。当 reverse=True 时,sorted 函数将返回降序排列的结果;默认值为 False,此时返回升序排列的结果。

numbers = [3, 1, 4, 2, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
# [1, 2, 3, 4, 5]

# 复杂数据
data = [("验", 1), ("证", 2), ("码", 3)]
# 过滤按元组的第二个元素进行降序
print(sorted([_ for _ in data if _[1] >= 1], key=lambda x: x[1], reverse=True))
# [('码', 3), ('证', 2), ('验', 1)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/567270.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖学习笔记(4.套餐管理,店铺营业状态设置)

目录 一、Redis1、redis在java中的运用 二、店铺营业状态设置1、需求分析设计2、代码设计3、测试 三、套餐管理1、需求设计分析2、代码设计3、测试 一、Redis 具体的redis基本操作就不多再介绍,本节主要学习redis在java中的运用。 1、redis在java中的运用 具体…

Linux之安装Nginx

目录 传送门前言一、快速安装二、反向代理语法1、基本语法2、location语法1. 基本语法2. 匹配规则3. 修饰符4. 权重5. 嵌套location6. 其他指令7.案例 三、配置反向代理 传送门 SpringMVC的源码解析(精品) Spring6的源码解析(精品&#xff0…

【数据结构】AVL树(万字超详细 附动图)

一、前言 二、AVL树的性质 三、AVL树节点的定义 四、AVL树的插入 五、AVL树的平衡调整 六、AVL树的验证 6.1 验证有序 6.2 验证平衡 七、AVL树的删除 八、AVL树的性能和代码 一、前言 还没有学习过二叉搜索树的同学可以移步 【数据结构】二叉搜索树-CSDN博客https:/…

《LINUX运维从入门到精通 》:运维入门者的自学用书

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号:网络豆云计算学堂 座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 写在前面 《Linux运维从入门到精通》从初学者角度…

免费GPU Google Colab保姆级使用攻略,实现数据集快速下载

Colab(Colaboratory)是一个基于云的交互式开发环境,专为数据科学、机器学习和人工智能任务设计。Colab 由 Google 提供,允许用户在浏览器中直接编写、运行、共享和协作处理 Python代码,特别是那些涉及大数据处理、计算…

CV每日论文--2024.4.22

1、BLINK: Multimodal Large Language Models Can See but Not Perceive 中文标题:BLINK:多模态大型语言模型可以看到但无法感知 简介:我们引入了Blink,这是一个全新的多模态语言模型(LLMs)基准&#xff0…

2024年城市规划与土木建筑国际学术会议(ICUPCA 2024)

2024年城市规划与土木建筑国际学术会议(ICUPCA 2024) 2024 International Conference on Urban Planning and Civil Architecture 一、【会议简介】 2024年城市规划与土木建筑国际学术会议,将汇集全球顶尖专家学者进行深入探讨。 这次会议的主题为“未来城市与土木…

上位机图像处理和嵌入式模块部署(树莓派4b开机启动脚本)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 编写好程序之后,一般要求程序开机启动后就可以运行。所以这个时候,我们一般就会把程序流程放在开发板的启动脚本当中。如果…

Web入门-Tomcat

黑马程序员JavaWeb开发教程 文章目录 一、简介1、Web服务器2、Tomcat 二、基本使用三、入门程序解析 一、简介 1、Web服务器 对HTTP协议操作进行封装,简化web程序开发部署Web项目,对外提供网上信息浏览服务 2、Tomcat 概念:Tomcat是Apach…

入门指南:从零开始学习ReactJS

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

Kafak详解(1)

简介 消息队列 为什么要有消息队列 图-1 消息队列的使用 消息队列 1)消息Message:网络中的两台计算机或者两个通讯设备之间传递的数据。例如说:文本、音乐、视频等内容。 2)队列Queue:一种特殊的线性表(数据元素首尾相接),特…

【React】Day6

项目搭建 基于CRA创建项目 CRA是一个底层基于webpack快速创建React项目的脚手架工具 # 使用npx创建项目 npx create-react-app react-jike# 进入到项 cd react-jike# 启动项目 npm start调整项目目录结构 -src-apis 项目接口函数-assets 项目资源文件&…

CANN 开发工具介绍

1、ATC工具 ATC(Ascend Tensor Compiler)是异构计 算架构CANN体系下的模型转换工具, 它可 以将开源框架的网络模型以及Ascend IR定义 的单算子描述文件(json格式)转换为昇腾 AI处理器支持的.om格式离线模型。 2、精度…

数新大数据平台迁移解决方案

随着企业的发展和数字化转型的不断深入,企业数据平台建设过去很多年,技术和架构过于落后,原有的大数据平台越来越难以满足业务需求。而在新的技术架构大数据平台的升级过程中,对数据和任务迁移的一致性、完整性有很高的要求&#…

JS绘制电流闪烁流动效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>电流闪动动效</title><style>.sd1 {dis…

linux信号机制分析

概念 信号递达&#xff1a;实际执行信号的处理动作就是信号递达 信号未决&#xff1a;信号从产生到递达之间的状态就是信号未决&#xff08;未决就是没有解决&#xff09; 收到某信号后&#xff0c;把未决信号集中的此信号置为1&#xff08;1表示未解决的信号&#xff09;&a…

kubeadmin搭建自建k8s集群

一、安装要求 在开始之前&#xff0c;部署Kubernetes集群的虚拟机需要满足以下几个条件&#xff1a; 操作系统 CentOS7.x-86_x64硬件配置&#xff1a;2GB或更多RAM&#xff0c;2个CPU或更多CPU&#xff0c;硬盘30GB或更多【注意master需要两核】可以访问外网&#xff0c;需要…

【QT进阶】Qt Web混合编程之使用ECharts显示各类折线图等

往期回顾 【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客 【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView&#xff08;图文并茂超详细版本&#xff09;-CSDN博客【QT进阶】Qt Web混合编程之html、 js的简单交互-CSDN博客 【QT进阶】Qt Web混合编程之使…

什么是信息熵?

什么是信息&#xff1f; ​ 我们在日常生活中吃瓜的时候总会说信息量太大了&#xff0c;那么这个信息是怎么个意思呢&#xff1f;我们在听到的时候很多原因都是因为这个消息是新鲜的&#xff0c;我们没见过的&#xff0c;没听说过&#xff0c;所以就说是信息量大。 信息熵 2…

YOLOv9训练结果分析->mAP、Precision、Recall、FPS、Confienc、混淆矩阵分析

简介 这篇博客&#xff0c;主要给大家讲解我们在训练yolov9时生成的结果文件中各个图片及其中指标的含义&#xff0c;帮助大家更深入的理解&#xff0c;以及我们在评估模型时和发表论文时主要关注的参数有那些。本文通过举例训练过程中的某一时间的结果来帮助大家理解&#xf…
最新文章