【Python】—— 推导式

目录

(一)列表推导式

 示例:创建一个0-10的列表

  示例:带有条件的列表推导式

  示例:多个for循环实现列表推导式

(二)字典推导式

(三)集合推导式

总结 


(一)列表推导式

Python 中的列表推导式是一种简洁、高效的创建列表的方法。基本作用是一个表达式创建一个有规律的列表或控制一个有规律列表。列表推导式又叫列表生成式。其基本语法结构如下:

[expression for item in iterable if condition]

【解释说明】

  • expression:是列表推导式中每个元素都要执行的表达式,可以是简单的变量,也可以是复杂的表达式。
  • item:是 iterable(可迭代对象,如列表、元组、字符串、集合、字典等)中的元素。
  • iterable:是可迭代对象。
  • if condition:是可选的,用于过滤掉不满足条件的元素。

 示例:创建一个0-10的列表

  • 方法一:while循环实现
#1.准备一个空列表
1ist1=[]#2,书写循环,依次追加数字到空列表11st1中
i=0
whi1e1<10:list1.append(i)1+=1pr1nt(1ist1】
  •  方法二:or循环实现
list1=[]
for i in range(10):list1.append(i)print(list1)
  • 方法三:列表推导式实现
list1 = [i for i in range(10)]
print(list1)

  示例:带有条件的列表推导式

要求:创建0-10的偶数列表

  • 方法一:range(0步长实现)
list = [i for i in range(0,10,2)]
print(list)
  • 方法二:if实现
list = [i for i in range(10) if i % 2 ==0]
print(list)

  示例:多个for循环实现列表推导式

要求:创建列表如下:

[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]

方法一:传统方式实现

list1 = []
for i in range(1,3):for j in range(3):list1.append((i,j))
print(list1)

方法一:多个for循环实现(就等同于for循环的循环嵌套)

list2 = [(i,j) for i in range(1,3) for j in range(3)]
print(list2)

【解释说明】

  • 外层循环:`for i in range(1,3)` + `i` 的值从 `1` 开始,到 `2` 结束(不包括 `3`),因为 `range(1,3)` 生成的是 `[1, 2]`。
  • 内层循环:`for j in range(3)` + `j` 的值从 `0` 开始,到 `2` 结束(不包括 `3`),因为 `range(3)` 生成的是 `[0, 1, 2]`。
  • 对于外层循环中的每一个 i 值,内层循环都会遍历所有的 j 值,并为每一对 (i, j) 生成一个元组。
  • 由于外层循环有两个值(1 和 2),而内层循环有三个值(01 和 2),所以总共会生成 6 个元组。

(二)字典推导式

首先大家先思考:如果有如下两个列表:

list1 = ['name','age','gender']
list2 = ['Tom',20,'man']

如何快速合并为一个字典?

  • 这就需要字典推导式。字典推导式作用:快速合并列表为字典或提取字典中目标数据。

它基于列表推导式(List Comprehension)的概念,但用于生成字典而不是列表。字典推导式的基本语法如下:

{key_expression: value_expression for item in iterable if condition}

【解释说明】

  • key_expression:用于生成字典键的表达式。
  • value_expression:用于生成字典值的表达式。
  • item:迭代变量,代表可迭代对象(如列表、元组、集合或字典)中的每一个元素。
  • iterable:可迭代对象,用于提供迭代变量item的值。
  • condition(可选):一个条件表达式,用于过滤可迭代对象中的元素。如果条件为真,则对应的键值对会被添加到字典中。

 示例:创建一个字典,字典key是1-5数字,value是这个数字的2次方。

dict1 = {i: i**2 for i in range(1,5)}print(dict1)

 示例:将两个列表合并为一个字典

list1 = ['name','age','gender']
list2 = ['Tom',20,'man']dict = {list1[i]:list2[i] for i in range(len(list1))}
print(dict)

 示例:提取字典中目标数据

counts ={'MBP':268,'HP':125,'DELL':201,'Lenovo':199,'acer':99}#需求:提取上述电脑数量大于等于200的字典数据
count1 = {key:value for key,value in counts.items() if value >= 200}
print(count1)

(三)集合推导式

它基于一个或多个for循环和可能的条件表达式。集合推导式的语法类似于列表推导式(List Comprehension),但结果是一个集合(set),因此它会自动去除重复的元素。

 示例:创建一个包含1到10之间所有偶数的集合

num = {x for x in range(1, 11) if x % 2 == 0} 
print(num)
  • 在这个例子中,我们遍历了从1到10的整数,并使用if语句检查每个数是否是偶数。
  • 如果是偶数,我们就将其添加到集合中。由于集合中的元素是唯一的,所以即使某个偶数在循环中多次出现,它也只会在集合中出现一次。

 示例:有一个列表的列表,在创建一个集合,其中包含所有子列表的第一个元素

# 创建一个列表的列表
list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 0, -1]]# 创建一个集合,其中包含所有子列表的第一个元素  
set1 = {sublist[0] for sublist in list1}
print(set1)
  • 遍历了list1中的每个子列表,并使用了sublist[0]来获取每个子列表的第一个元素。这些元素被添1加到一个集合中,所以重复的元素只会出现一次。

总结 

以上便是关于推导式的全部知识小结!!!

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

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

相关文章

大语言模型预训练新前沿:「最佳适配打包」重塑文档处理标准

源自&#xff1a;机器之心 "人工智能技术与咨询“ 发布 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨&#xff0c;并不意味着支持其观点或证实其内容的真实性。版权归原作者所有&#xff0c;如转载稿涉及版权等问题&#xff0c;请立即联系…

MySQL的自增ID连续性控制变量innodb_autoinc_lock_mode

查看 innodb_autoinc_lock_mode 的值 在 MySQL 命令行客户端中使用“SHOW VARIABLES”查看&#xff1a; MySQL [mydb]> SHOW VARIABLES LIKE innodb_autoinc_lock_mode; --------------------------------- | Variable_name | Value | -----------------------…

简单谈一下微服务

微服务&#xff0c;说这个之前我们先了解一下soa&#xff0c;这个十几年前的火热词汇&#xff0c;说实话&#xff0c;虽然我是一个计算机行业人士&#xff0c;但是很反感这种造词的风气&#xff0c;尤其是云里雾里&#xff0c;旧瓶装新酒的&#xff0c;作为一个it技术&#xff…

蓝桥杯第18489题——拔苗助长(质数+map)

问题描述 蓝桥村是蓝桥王国年年的模范村&#xff0c;这是因为他们村的稻田每年都是优美的。 对于一块稻田来说&#xff0c;如果其中任意两根不同的秧苗的高度乘积均为完全平方数&#xff0c;该稻田被称之为优美的稻田。 蓝桥王国的稻田验收日即将到来&#xff0c;但现在蓝桥…

BGP(一)边界网关协议

BGP协议基础 路由分类 直连路由 非直连路由&#xff08;间接路由&#xff09; 静态路由动态路由 IGP&#xff1a;内网网关路由协议&#xff08;在企业内部或数据中心内部使用&#xff09; DV&#xff1a;距离矢量路由协议RIP&#xff08;v1/v2&#xff09;IGRP——网络直径&…

【易生支付官网注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

【会议征稿,IEEE独立出版】第四届计算机技术与信息科学国际研讨会(ISCTIS 2024)

第四届计算机技术与信息科学国际研讨会&#xff08;ISCTIS 2024)将于2024年7月12-14日在中国西安举行。大会将邀请国内外计算机技术与信息科学领域的知名专家学者出席会议&#xff0c;在大会上通过主题演讲、口头报告等方式与学者们分享最新研究成果、交流探讨学术难题。同时&a…

彩信JSON接口对接发送

随着通讯技术的飞速发展&#xff0c;传统的短信已经无法满足人们日益增长的沟通需求。在这样的背景下&#xff0c;群发彩信作为一种更为先进、更为丰富的信息传递方式&#xff0c;逐渐受到了企业和个人的青睐。那么&#xff0c;群发彩信应该怎么对接&#xff0c;又具体有哪些优…

模特百度百科怎么做出来的

百度百科是一个公正、开放、客观的平台&#xff0c;收录了大量的百科词条内容&#xff0c;形成了一定的“权威性”。以下是关于模特百度百科制作的具体步骤和注意事项&#xff1a; 准备阶段 收集资料&#xff1a;为了确保参赛作品的真实性和权威性&#xff0c;需要收集相关信息…

招展工作全面启动!2024深圳国际数字能源展览会

2024深圳国际数字能源展览会 2024 International Digital Energy Expo 时间:2024年9月8-11日 地点:深圳会展中心 指导单位&#xff1a; 国家能源局 深圳市人民政府 中国电力企业联合会 主办单位&#xff1a; 深圳市投资控股有限公司 深圳能源集团股份有限公司 深圳市资…

15.数组的方法(改变原数组和不改变原数组)

改变原数组 &#xff08;1&#xff09;pop 语法&#xff1a;数组名.pop() 作用&#xff1a;删除数组最后一项 返回值&#xff1a;返回被删除的那一项 var arr["zhangsna","lisi","wanger","mazi"] var resarr.pop() console.log(arr) …

【Android14 ShellTransitions】(一)开篇

说来惭愧&#xff0c;AndroidU都已经开发这么久了&#xff0c;但是我还没有整理过ShellTransition相关的知识。我本来希望能够系统的写一篇关于ShellTransition的笔记出来&#xff0c;但是发现一来这是一个比较庞大的模块&#xff0c;二来我个人能力有限&#xff0c;对ShellTra…

插件“猫抓”使用方法 - 浏览器下载m3u8视频 - 合并 - 视频检测下载 - 网课下载神器

前言 浏览器下载m3u8视频 - 合并 - 网课下载神器 chrome插件-猫抓 https://chrome.zzzmh.cn/info/jfedfbgedapdagkghmgibemcoggfppbb 步骤&#xff1a; P.s. 推荐大佬的学习视频&#xff01; 《WEB前端大师课》超级棒&#xff01; https://ke.qq.com/course/5892689#term_id…

ty1208-z盒子 刷 armbian

ty1208-z&#xff0c;1g ram 8g emmc&#xff0c;s905m的cpu 1.安装“win32diskimager-1.0.0-install.exe”,使用它的默认设置制作“Armbian_5.77_Aml-s905_Debian_stretch_default_5.0.2_20190401.img”U盘启动盘。 2.将U盘启动盘中根目录下的aml_autoscript.zip改名为updat…

discuzX2.5的使用心得 札记一

从开始接受php论坛的开发任务&#xff0c;对php感兴趣的我开始迷恋上discuz这个产品了&#xff0c; 像戴志康这样的创新人才&#xff0c;是我们这代人的骄傲和学习的榜样 应该是了解一下&#xff0c;啥事discuzX2.5&#xff0c;百度看一下 discuz x2.5_百度百科 看完百度词条…

Vue 子组件向父组件传值

1、使用自定义事件 ($emit) 这是Vue中最常用的子组件向父组件传递数据的方式。子组件通过触发一个自定义事件&#xff0c;并附加数据作为参数&#xff0c;父组件则监听这个事件并处理传递过来的数据。 子组件 (发送数据)&#xff1a; <template><button click"…

Python + pytest + allure框架搭建源码

框架功能讲解 common # 配置 config.yaml # 公共配置 setting.py # 环境路径存放区域 data # 测试用例数据 Files # 上传文件接口所需的文件存放区域 logs # 日志层 report # 测试报告层 test_case # 测试用例代码 __init__.py # 读取测试用例文件&#xff0c;并…

JJJ:WARN,WARN_ON,BUG_ON

WARN用法&#xff1a; WARN(i > 1, “if i > 1, will print”) 当满足一些条件时&#xff0c;该函数会输出一条带有调试信息的警告消息&#xff0c;并打印出相应的调用栈信息&#xff0c;以便于开发人员进行调试。 不要过度使用&#xff0c;否则会造成系统性能下降。在生…

C语言 | Leetcode C语言题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool isSymmetric(struct TreeNode* root) {if (root NULL) return true;//如果根为空直接…

selenium 爬取今日头条

由于今日头条网页是动态渲染&#xff0c;再加上各种token再验证&#xff0c;因此直接通过API接口获取数据难度很大&#xff0c;本文使用selenium来实现新闻内容爬取。 selenium核心代码 知识点&#xff1a; 代码中加了很多的异常处理&#xff0c;保证错误后重试&#xff0c;…