菜鸟学习日记(python)——推导式

news2025/1/13 13:22:16

 python中的推导式是一种独特的数据处理方式,可以从一个数据序列去构建另一个新的数据序列的结构体。

它包括以下推导式:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式
  • 元组(tuple)推导式

列表(list)推导式

列表推导式的一般格式为:

[表达式1 for 变量名 in 列表名]

或者对推导式结果进行筛选

[表达式1 for 变量名 in 列表名 if 表达式2]

其中,表达式1表示的是列表生成元素表达式,它可以是有返回值的函数;表达式2是条件过滤语句,可以过滤掉不符合条件的值。

以下是简单的实例:

#列表推导式
#将list1乘以2倍输出
list1=[1,2,3]
print([i*2 for i in list1 if i>1])
#list1中长度大于3的字符串,小写全部转成大写输出
list1=['lily','judy','Anny','Bob']
print([str.upper() for str in list1 if len(str)>3])
#打印20以内可以被2整除的整数
print([num for num in range(20) if num%2==0])

字典(dict)推导式

字典推导式的一般格式为:

{键:值表达式 for 键 in 序列}

{键:值表达式 for 键 in 序列 if 条件表达式}

下面是简单的实例:

#字典推导式
#列表元素作为键,列表元素的长度作为值
list1=['name','sex','age']
dict1={str:len(str) for str in list1}
print(dict1)
#用推导式复制出一个拥有相同键值对的字典
dict2={'name':'卷鹅','sex':'男','age':28}
dict3={str:dict2[str] for str in dict2.keys()}
print(dict3)
print(id(dict2))        #对比两个字典的id,是不同的
print(id(dict3))
#用推导式计算三个整数的幂方
dict4={num:num**2 for num in range(1,5)}
print(dict4)
#加上筛选条件
dict4={num:num**2 for num in range(1,5) if num!=3}
print(dict4)

集合(set)推导式

集合推导式的一般格式为:

{表达式 for 变量 in 序列}

{表达式 for 变量 in 序列 if 条件表达式}

简单实例如下:

#集合推导式
set1={var**3 for var in range(1,6)}
print(set1)
set2={ch for ch in('a','b','c','d','e') if ch not in ('a','c')}
print(set2)

注意:输出的集合是无序的

元组(tuple)推导式(生成器表达式)

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。

元组推导式基本格式:

(表达式 for 变量名 in 序列)

  或

(表达式 for 变量名 in 序列 if 条件表达式)

元组推导式和列表推导式的用法完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。

但是我们可以用类型转换函数将它转换为一个元组

简单的实例如下:

#元组推导式
a = (x for x in range(1,10))
print(a)
print(type(a))
tuple1=tuple(a)
print(tuple1)
print(type(tuple1))

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

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

相关文章

在AWS Lambda上部署标准FFmpeg工具——自定义层的方案

大纲 1 确定Lambda运行时环境1.1 Lambda系统、镜像、内核版本1.2 运行时1.2.1 Python1.2.2 Java 2 打包FFmpeg3 创建Lambda的Layer4 测试4.1 创建Lambda函数4.2 附加FFmpeg层4.3 添加测试代码4.4 运行测试 参考文献 FFmpeg被广泛应用于音/视频流处理领域。对于简单的需求&#…

刷题记录--算法--简单

第一题 2582. 递枕头 已解答 简单 相关标签 相关企业 提示 n 个人站成一排,按从 1 到 n 编号。 最初,排在队首的第一个人拿着一个枕头。每秒钟,拿着枕头的人会将枕头传递给队伍中的下一个人。一旦枕头到达队首或队尾,传递…

VUE2+THREE.JS 设定巡航行动轨迹

设定巡航行动轨迹 引入three.path初始化坐标点animate 执行行动轨迹动画参考博客 我们写3D时,常常会有按照一定轨迹去浏览模型, 所以,我们要先确认行动轨迹,渲染出行动轨迹以后,再让人物按照行动轨迹去移动 引入three.path cnpm …

ssm校园论坛管理系统项目分享

校园论坛管理系统是基于java编程语言,mysql数据库,ssm框架和idea工具开发,本系统主要分为学生用户,管理员两个角色,其中用户可以注册登陆系统,在线发帖,查看栏目帖子,回复帖子&#…

【数据分析实战】酒店行业华住集团门店分布与评分多维度分析

文章目录 1. 写在前面2. 数据集展示3. 多维度分析3.1 门店档次多元化:集团投资战略观察3.1.1 代码实现3.1.2 本人浅薄理解 3.2 门店分布:各省市分布概览3.2.1 代码实现3.2.2 本人浅薄理解 3.3 门店分级评分:服务水平的多维度观察3.3.1 代码实…

远程服务器QEMU+Ubuntu+GRUB+VNC最佳实践

远程服务器QEMUUbuntuGRUBVNC最佳实践 1. 准备2. QEMU启动安装Ubuntu2.1 服务器端2.2 本地端 3. 从服务器终端控制虚拟机GRUB与虚拟机终端 这段时间参与大量内核切换测试工作,实体机需要硬件自检太过笨重,因此主要通过QEMU验证正确性。有一个很大的问题是…

开源项目CuteSqlite开发笔记(二):SQLite的架构

在开发CuteSqlite图形客户端的时候,需要用到SQL的语法解释,来对SQL语句进行优化。找了很多的SQL语法解释器,都不是十分满意,只有翻开Sqlite的源码,看看SQLite对SQL语句的解释过程,本文是翻译的官方文档。 官…

模块电源(六):前馈电容

一、前馈电容: 前馈电容是与电阻分压的顶部电阻 并联的"可选电容器" 二、计算及仿真: 1、计算 无前馈电容时,输出电压:;有前馈电容时,输出电压:,(其中,&am…

如何解决5G基站高能耗问题?

安科瑞 须静燕 截至2023年10月,我国5G基站总数达321.5万个,占全国通信基站总数的28.1%。然而,随着5G基站数量的快速增长,基站的能耗问题也逐渐日益凸显,基站的用电给运营商带来了巨大的电费开支压力,降低5…

JavaSE基础50题:17. (递归)求1+2+3+……+10

概述 递归求123……10 代码 public class P17 {public static int sum(int n) {if (n 1) {return 1;}return n sum(n-1);}public static void main(String[] args) {System.out.println(sum(10)); //55} }运行过程 如:1234,最后的结果为10

Nacos源码解读07——集群数据同步

Distro协议背景 Distro 协议是 Nacos 社区自研的⼀种 AP 分布式协议,是面向临时实例设计的⼀种分布式协议, 其保证了在某些 Nacos 节点宕机后,整个临时实例处理系统依旧可以正常工作。作为⼀种有状态 的中间件应用的内嵌协议,Dis…

柏林噪声C++

柏林噪声 随机噪声 如上图所示随机噪声没有任何规律可言,我们希望生成有一些意义的局部连续的随机图案 一维柏林噪声 假设希望生成一段局部连续的随机曲线,可以采用插值的方式:在固定点随机分配y值(一般是整数点)&a…

docker安装elasticsearch8.5.0和kibana

服务器环境,centos7 一、安装elasticsearch 1. 创建一个es和kibana通用的网络 docker network create es-net 2. 拉取es镜像,这里选择8.5.0版本 docker pull elasticsearch:8.5.03. 创建挂载目录,并授权 mkdir /usr/local/install/ela…

WebStorm:Mac/Win上强大的JavaScript开发工具

WebStorm是JetBrains公司开发的针对Mac和Windows系统的JavaScript开发工具。它为开发者提供了一站式的代码编辑、调试、测试和版本控制等功能,帮助你更高效地进行Web开发。新版本的WebStorm 2023在性能和用户体验方面都做出了重大改进,让你的JavaScript开…

机器学习实战:预测波士顿房价

前言: Hello大家好,我是Dream。 今天来学习一下机器学习中一个非常经典的案例:预测波士顿房价,在此过程中也会补充很多重要的知识点,欢迎大家一起前来探讨学习~ 一、导入数据 在这个项目中,我们利用马萨诸…

富时中国A50指数查询方法详解

富时中国A50指数,是指衡量中国A股市场50家具有代表性的上市公司股票表现的指数。对于投资者来说,了解和查询A50指数的走势对于制定投资策略至关重要。那么,如何轻松地查询富时中国A50指数呢? 1. 百度搜索 百度搜索引擎是最简便的…

【Node.js后端架构:MVC模式】基于expres讲解

Node.js后端架构:MVC模式 什么是MVC MVC (Model-View-Controller) 是一种软件设计模式,用于将应用程序的逻辑分离成三个不同的组件:模型、视图和控制器。 模型(Model)负责处理应用程序的数据逻辑。它负责从数据库或其…

使用Netty实现文件传输的HTTP服务器和客户端

现在我们来用netty实现文件传输的HTTP服务器和客户端 pom依赖文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…

国内好用的CRM系统你知道哪些?看看这篇吧

选择CRM系统需要考虑许多因素&#xff0c;其中一个重要的标准是用户数量。使用广泛、受到用户认可的CRM系统&#xff0c;无论是在功能、易用性、灵活性还是价格上&#xff0c;都会给企业带来更多的益处。有什么国内用得比较多的CRM系统吗&#xff1f; 以Zoho CRM为例&#xff…

Linux学习教程(第十四章 Linux系统服务管理)一

第十四章 Linux系统服务管理&#xff08;一&#xff09; 什么是系统服务&#xff1f;服务是在后台运行的应用程序&#xff0c;并且可以提供一些本地系统或网络的功能。 那么&#xff0c;Linux 中常见的服务有那些&#xff0c;这些服务怎么分类&#xff0c;服务如何启动&#x…