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

 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.hqwc.cn/news/258071.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JAVA+SpringBoot+Vue的前后端分离的旅游网站

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 近年来,随…

一文详解Java反射

文章目录 反射是什么?反射的作用所有方法汇总一、加载Class对象二、加载类的构造器对象三、加载类的成员变量四、加载类的成员方法 反射是什么? 反射就是:加载类,并允许以编程的方式解剖类中的某个成分(成员变量&#…

windows系统nodeJs报错node-sass npm ERR! command failed

报错信息 npm WARN deprecated request2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated tar2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asa…

数组的查找:线性查找,二分查找

数组的查找:线性查找,二分查找 主要包含线性查找、二分查找 线性查找 先复习一下数组:数据结构复习:链表、数组、栈、队列、哈希表、堆、二叉树-CSDN博客 即便数据没有按顺序存储,也可以应用线性查找。 查找数字:首…

Apache Flink(四):Flink 其他实时计算框架对比

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 根据前文描述我们知道Flink主要处…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(1)- map、flatmap和filter

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

【优选算法系列】【专题二滑动窗口】第三节.904. 水果成篮和438. 找到字符串中所有字母异位词

文章目录 前言一、水果成篮 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写 1.2.3 题目总结二、找到字符串中所有字母异位词 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写 …

HarmonyOS学习 第2节 DevEco Studio工程介绍

工程配置页 界面布局介绍 代码编辑区、通知栏、工程目录区、预览区 工程目录区 便于理解,可以切换为 Ohos AppScope主要用于存放整个应用公共的信息与资源 entry默认的初始模块ets文件用于存放编写的代码文件configuration存放相应模块的配置文件resources对应模块…

Cheat Engine修改器检测方案

在游戏安全对抗过程中,有不少外挂的实现基于对游戏内存模块进行修改,这类外挂通常会使用「内存修改器」。 据FairGuard游戏安全数据统计,在游戏面临的众多安全风险中,修改器的占比高达16% 。如此高的占比,修改器的危害…

【Vulnhub 靶场】【Funbox: GaoKao】【简单】【20210606】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/funbox-gaokao,707/ 靶场下载:https://download.vulnhub.com/funbox/FunboxGaoKao.ova 靶场难度:简单 发布日期:2021年06月06日 文件大小:1.3 GB 靶场作者&#…

《使用ThinkPHP6开发项目》 - 设置项目环境变量

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 在上一编我们讲了ThinkPHP6框架的创建,创建完成ThinkPHP6框架后,我们这里就可以开始设置我们的环境变量了。 安装完成ThinkPHP6框架生成的项目文件 修改项目配置我们修改项目config文件夹里的对…

Themis: Fast, Strong Order-Fairness in Byzantine Consensus

目录 笔记后续的研究方向摘要引言秩序井然 Themis: Fast, Strong Order-Fairness in Byzantine Consensus CCS 2023 笔记 后续的研究方向 摘要 我们介绍了Themis,这是一种将交易的公平排序引入(许可的)拜占庭共识协议的方案,最…