【数据分析之道-基础知识(九)】推导式

news2025/1/17 6:01:01

在这里插入图片描述

文章目录

  • 专栏导读
  • 1、前言
  • 2、列表推导式
  • 3、集合推导式
  • 4、字典推导式
  • 5、元组推导式

专栏导读

✍ 作者简介:i阿极,CSDN Python领域新星创作者,专注于分享python领域知识。

本文录入于《数据分析之道》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
订阅后,可以阅读《数据分析之道》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
还可以订阅进阶篇《数据分析之术》,其包含数据分析方法论、数据挖掘算法原理、业务分析实战。
✍ 其他专栏:《数据分析案例》 ,《机器学习案例》

订阅专栏阅读:《数据分析之道》
【数据分析之道-基础知识(一)】字符串
【数据分析之道-基础知识(二)】列表
【数据分析之道-基础知识(三)】元组
【数据分析之道-基础知识(四)】字典
【数据分析之道-基础知识(五)】集合
【数据分析之道-基础知识(六)】函数
【数据分析之道-基础知识(七)】高级函数
【数据分析之道-基础知识(八)】循环语句

1、前言

Python推导式(Comprehension)是一种简洁高效的代码编写方式,可以用一行代码来创建列表、集合、字典等复杂数据结构。
在这里插入图片描述

Python的推导式主要有以下三种类型:列表推导式、集合推导式和字典推导式。

Python 没有元组推导式。元组是不可变的数据类型,它们通常用于存储多个不同类型的元素。与列表和字典不同,元组没有推导式。

虽然没有元组推导式,但是可以通过生成器表达式生成元组。

2、列表推导式

列表推导式(List comprehension)是一种在Python中快速创建列表的方法。

它的基本语法为:

[ expression for item in iterable if condition ]

expression 是要生成的列表元素的表达式,item 是迭代变量,iterable 是一个可迭代对象,例如列表、元组、字符串、字典等,condition 是可选的条件表达式,用于筛选符合条件的元素。

我们可以用列表推导式来生成一个包含1到10的平方的列表:

squares = [x**2 for x in range(1, 11)]
print(squares) 

在这里插入图片描述

还可以在列表推导式中添加条件表达式,例如筛选出所有偶数的平方:

squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(squares) 

在这里插入图片描述

3、集合推导式

集合推导式(Set comprehension)是一种在Python中快速创建集合的方法。它的基本语法与列表推导式类似,只是用大括号 {} 来代替中括号 [],例如:

squares = {x**2 for x in range(1, 11)}
print(squares)

在这里插入图片描述

4、字典推导式

字典推导式(Dictionary comprehension)是一种在Python中快速创建字典的方法。

它的基本语法为:

{key_expression: value_expression for expression in iterable if condition}

key_expression 是字典键的表达式,value_expression 是字典值的表达式,expression 是迭代变量,iterable 是一个可迭代对象,例如列表、元组、字符串、字典等,condition 是可选的条件表达式,用于筛选符合条件的元素。

我们可以用字典推导式来生成一个将数字转换为其平方的字典:

squares = {x: x**2 for x in range(1, 11)}
print(squares) 

在这里插入图片描述

在字典推导式中也可以添加条件表达式,来实现筛选符合条件的键值对。例如,如果我们想要从一个字典中筛选出所有键是偶数的键值对,我们可以这样实现:

original_dict = {1: 'apple', 2: 'banana', 3: 'orange', 4: 'pear'}

new_dict = {key: value for key, value in original_dict.items() if key % 2 == 0}

print(new_dict) 

在这里插入图片描述

我们使用了条件表达式 if key % 2 == 0 来判断键是否为偶数。只有符合条件的键值对才会被添加到新的字典中。

5、元组推导式

Python 中并不存在元组推导式。元组是不可变的序列类型,它们通常是用来存储不可变的数据,例如一些常量或固定的配置信息。虽然你可以使用生成器表达式或 map 函数对元组中的元素进行处理,但是它们并不是元组推导式,因为它们返回的是生成器或迭代器对象,而不是元组对象。

虽然没有元组推导式,但是可以通过生成器表达式生成元组,具体的实现方式如下所示:

a = (x for x in range(1,10)) # 生成器表达式
tuple(a) # 使用 tuple() 函数将生成器转换为元组

在这里插入图片描述

首先通过生成器表达式 (x for x in range(1,10)) 创建了一个生成器对象 a,然后通过 tuple() 函数将其转换为元组 (1, 2, 3, 4, 5, 6, 7, 8, 9),最终得到一个包含整数 1 到 9 的元组。


📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言学习1--------Visual Studio集成开发环境的搭建

C语言学习1--------Visual Studio集成开发环境的搭建适合初学者适用集成开发环境下载 Visual Studio 2019安装 Visual Studio 2019安装工作负载为C自定义安装位置激活 Visual Studio适合初学者适用集成开发环境 建议初学者适用最新的——Visual Studio 2019为集成开发环境。 部…

【数据库原理 • 五】数据库安全性与完整性

前言 数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。 当前…

【C++11那些事儿(一)】

文章目录一、C11简介二、列表初始化2.1 C98中{}的初始化问题2.2 C11中的列表初始化三、各种小语法3.1 auto3.2 decltype3.3 nullptr3.4 范围for四、STL中的一些变化五、左/右值引用和移动语义(本篇重点)5.1 做值引用和右值引用5.2 左值引用与右值引用比较…

【快乐手撕LeetCode题解系列】—— 复制带随机指针的链表

【快乐手撕LeetCode题解系列】—— 复制带随机指针的链表😎前言🙌复制带随机指针的链表🙌画图分析:😍思路分析:😍源代码分享:😍总结撒花💞😎博客昵…

shell结构化命令中for命令

shell脚本编程系列 for var in list docommands done读取列表中的值 每次遍历值列表时,for命令会将列表中的下一个值赋值给变量 #!/bin/bash# basic for commandfor test in Alabama Alaska Arizona Arkansas California Coloradodoecho The next state is $testdo…

第07章_面向对象编程(进阶)

第07章_面向对象编程(进阶) 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 关键字:this 1.1 this是什么? 在Java中,this关键字不算难理解…

关于图像分割的预处理 transform

目录 1. 介绍 2. 关于分割中的 resize 问题 3. 分割的 transform 3.1 随机缩放 RandomResize 3.2 随机水平翻转 RandomHorizontalFlip 3.3 随机竖直翻转 RandomVerticalFlip 3.4 中心裁剪 RandomCrop 3.5 ToTensor 3.6 normalization 3.7 Compose 4. 预处理结果可视…

WPF mvvm框架Stylet使用教程-基础用法

Stylet框架基础用法 安装Nuget包 在“管理Nuget程序包”中搜索Stylet,查看Stylet包支持的net版本,然后选择第二个Stylet.Start包进行安装,该包会自动安装stylet并且生成基本的配置 注意事项:安装时要把需要安装的程序设为启动项…

第06章_面向对象编程(基础)

第06章_面向对象编程(基础) 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 学习面向对象内容的三条主线 Java类及类的成员:(重点&…

《QT+CGAL网格处理——网格重建》

QT+CGAL网格处理——网格重建 一、重建效果二、代码分析显示代码格式转换彩色网格显示三、后续一、重建效果 二、代码分析 显示 1、依旧采取VTK显示,参照《QT+PCL》; 2、点数据、网格数据依旧采用pcl数据结构,cgal处理完成后转换格式即可 界面参照:

微服务学习-SpringCloud -Nacos (心跳机制及健康检查源码学习)

文章目录心跳机制与健康检查流程图心跳机制与健康检查总结详细源码说明当多个服务进行注册时,如何解决注册表并发冲突问题?心跳机制与健康检查流程图 心跳机制与健康检查总结 微服务在启动注册Nacos时,会创建一个定时任务,定时向服务端发生…

基于文心一言的底层视觉理解,百度网盘把「猫」换成了「黄色的猫」

随着移动互联网的一路狂飙,手机已经成为人们的新器官。出门不带钥匙可以,不带手机却是万万不可以的。而手机上,小小的摄像头也越来越成为各位「vlogger」的口袋魔方。每天有超过数亿的照片和视频被上传到百度网盘中,这些照片和视频…

Nginx 实战-负载均衡

一、负载均衡今天学习一下Nginx的负载均衡。由于传统软件建构的局限性,加上一台服务器处理能里的有限性,在如今高并发、业务复杂的场景下很难达到咱们的要求。但是若将很多台这样的服务器通过某种方式组成一个整体,并且将所有的请求平均的分配…

Kafka的命令行操作

一、topic命令 下面Windows命令需要把cmd路径切换到bin/windows下。 而Linux命令只需要在控制台切换到bin目录下即可。 下面都以Windows下的操作为例,在Linux下也是一样的。 1.1 查看主题命令的参数 kafka-topics.bat # Windows kafka-topics.sh # Linux输…

机器学习中的数学——学习曲线如何区别欠拟合与过拟合

通过这篇博客,你将清晰的明白什么是如何区别欠拟合与过拟合。这个专栏名为白话机器学习中数学学习笔记,主要是用来分享一下我在 机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言&…

关于人工智能前沿信息获取的精品课程

通过观看在线课程可以很方便掌握获取人工智能前沿信息的方法,本文将介绍一些相关课程。 1. 武汉大学黄如花教授的信息检索中文课程知识面广泛,内容详尽,讲解清晰,课程的视频见课程 56。 ​ 课程 56 武汉大学黄如花教授的《信息检…

图神经网络GNN介绍

目录标题图神经网络基础图基本模块定义图的邻接矩阵点特征的更新(重构)多层GNN图卷积GCN模型GCN基本思想网络层数:基本计算图注意力机制graph attention networkT-GCN序列图神经网络图相似度图神经网络基础 图基本模块定义 三个特征&#x…

C++ 模板初阶

目录 一、函数模板 1.函数模板的概念 2.函数模板的定义 3.函数模板的原理 4.函数模板的实例化 ①隐式实例化 ②显式实例化 5.非模板函数与同名的函数模板同时存在 6.模板参数的匹配原则 二、类模板 1.类模板的定义格式 2.采用类模板的类外函数的定义格式 3.类模板…

【Linux-计算机网络】-TCP协议通信流程

1.TCP协议通信流程图 1.1TCP协议的通讯流程可以分为以下步骤: 应用层:应用程序通过系统调用API(如socket)创建一个TCP套接字(socket),并设置好相关的选项。 传输层:当应用程序调用c…

机器学习中的数学原理——过拟合、正则化与惩罚函数

通过这篇博客,你将清晰的明白什么是过拟合、正则化、惩罚函数。这个专栏名为白话机器学习中数学学习笔记,主要是用来分享一下我在 机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言…