尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Python解析式
在日常的情况里面, 是经常可以看见形如ret等于的这种表现的。这是一个列表推导式, 用于计算列表中每个元素的平方。这类赋值语句, 对于从C转行过来的人来说, 不是太容易懂得这种for循环的用法是怎么一回事, 这也就是为了追求简练而被创造出来的一种新式语法。解析式存在如下的一些好处:该解析式被明确地划分成下述的四种具体情形。接下来会一个一个地说说这四种表达方式该怎么用。In [1]: lst range(10)In [2]: %%timeit...: ret [x ** 2 for x in lst]...:100000 loops, best of 3: 5.28 µs per loopIn [3]: %%timeit...: ret []...: for x in lst:...: ret.append(x ** 2)...:100000 loops, best of 3: 6.09 µs per loop # 耗时稍高可以发现运行效率是稍微高出了一点, 但是最主要的优势还是在于代码的简洁性。你可以把列表解析式和if语句搭配在一起用。比如,从列表lst里面把偶数给挑出来。In [4]: ret []In [5]: for x in lst:...: if x % 2 0:...: ret.append(x) # 使用for循环...:In [6]: retOut[6]: [0, 2, 4, 6, 8]In [7]: ret [x for x in lst if x % 2 0] # 使用列表解析式In [8]: retOut[8]: [0, 2, 4, 6, 8]列表解析式是能够像for循环那样来使用if语句的。在列表解析式的for语句部分, 是能够去实现嵌套操作的。In [9]: (x, y) for x in range(0, 5) for y in range(5, 10)File , line 1(x, y) for x in range(0, 5) for y in range(5, 10)^SyntaxError: invalid syntax# 说明列表解析式一定要使用中括号括起来In [10]: [(x, y) for x in range(5) for y in range(5, 10)]Out[10]:[(0, 5),(0, 6),(0, 7),(0, 8),(0, 9),(1, 5),(1, 6),(1, 7),(1, 8),(1, 9),(2, 5),(2, 6),(2, 7),(2, 8),(2, 9),(3, 5),(3, 6),(3, 7),(3, 8),(3, 9),(4, 5),(4, 6),(4, 7),(4, 8),(4, 9)]In [11]: ret []In [12]: for x in range(5):...: for y in range(5, 10):...: ret.append((x, y))...:In [13]: retOut[13]:[(0, 5),(0, 6),(0, 7),(0, 8),(0, 9),(1, 5),(1, 6),(1, 7),(1, 8),(1, 9),(2, 5),(2, 6),(2, 7),(2, 8),(2, 9),(3, 5),(3, 6),(3, 7),(3, 8),(3, 9),(4, 5),(4, 6),(4, 7),(4, 8),(4, 9)]单行if语句的写法, 和列表解析式的写法, 看起来是非常相似的。这是三目运算符的表达式形式, 也可以写成x如果cond就输出y否则的样子。下面进行演示, 这种演示以具体的例子为依托, 具体来说是把偶数拿来进行平方运算操作, 而把奇数拿来进行立方运算操作。In [14]: ret []In [15]: for x in lst:...: if x % 2 0:...: ret.append(x ** 2)...: else:...: ret.append(x ** 3)...:In [16]: retOut[16]: [0, 1, 4, 27, 16, 125, 36, 343, 64, 729]In [17]: x 3# if特殊用法In [18]: x ** 2 if x % 2 0 else x ** 3Out[18]: 27In [19]: 3 if True else 4Out[19]: 3# 如果采用if特殊用法配合列表解析式 x if cond else y for ...In [20]: [x ** 2 if x % 2 0 else x ** 3 for x in lst]Out[20]: [0, 1, 4, 27, 16, 125, 36, 343, 64, 729]生成器解析式当人们看到列表解析式, 它会直接返回一个具体的列表, 而生成器解析式的用途不同, 它能够产生的结果叫做解析式内容, 如果使用者把列表解析式外面的中括号改换成小括号, 那么得到的东西就是生成器解析式。In [1]: range(10000)Out[1]: range(0, 10000)In [2]: g (x ** 2 for x in range(100000000000))In [3]: gOut[3]: at 0x7f9f08a5f0a0gt;In [4]: next(g)Out[4]: 0In [5]: next(g)Out[5]: 1In [6]: next(g)Out[6]: 4列表解析式和生成器解析式的选择如果把这个列表解析式里边的中括号给换掉, 换成那种大括号的话, 这就变成集合解析式了。In [1]: lst [2, 4, 5, 6, 3, 4, 2]In [2]: s {x for x in lst}In [3]: sOut[3]: {2, 3, 4, 5, 6} # 可见列表解析式生成的时候会去掉重复符合集合要求In [4]: type(s)Out[4]: set在利用语法的时候会发现使用字典解析式同样也需要大括号, 可是需要搞清楚的是与集合解析式的区别在于对于表达式的位置而言并不是单个元素, 而是把键和值组成的对进行放置。In [1]: {str(x): x for x in range(5)}Out[1]: {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}在这四种解析式里, 被用得最广的还要属那个列表解析式。平时大家经常会碰到一些让人叫绝的、特别巧妙的用法情况。
RELATED

相关推荐

信创可控+边缘计算单视频流三维实时重构在危化园区高温/有毒/爆炸等高危环境无人化巡检中的应用技术白皮书

信创可控+边缘计算单视频流三维实时重构在危化园区高温/有毒/爆炸等高危环境无人化巡检中的应用技术白皮书

前言危化园区生产装置区、储罐集群、高危管廊、化工反应工段普遍存在高温高热、有毒介质挥发、易燃易爆、高压密闭等极端高危工况,属于典型的人员禁入、人工受限作业场景。传统人工现场巡检模式存在人身安全风险高、巡检频次有限、夜间盲区多、隐患发现滞后、数据记…

📅 2026/10/2 17:45:46
LeetCode 11题盛水最多容器:双指针算法详解与面试攻略

LeetCode 11题盛水最多容器:双指针算法详解与面试攻略

1. 先读懂题目:这道题到底在问什么如果你准备 Java 开发岗面试,LeetCode 第 11 题“盛水最多的容器”几乎是绕不开的一道题。它看起来简单,但真正能一次讲清楚的人不多。题目原文是给一个非负整数数组height,每个元素代表坐标(i, …

📅 2026/10/2 17:45:46
BeanUtils.copyProperties不是深拷贝:Java对象复制陷阱与安全方案

BeanUtils.copyProperties不是深拷贝:Java对象复制陷阱与安全方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/2 17:45:45
MORE NEWS

更多资讯

📰

基于深度学习的智能坐姿检测系统:Python+PyTorch实战

简介:面向计算机视觉与人工智能方向的学生,一套基于深度学习的智能坐姿检测完整源码与配套数据集,可满足课程设计、期末大作业或毕业设计的落地需求。整个项目以Python实现,核心代码覆盖数据读取与预处理、模型结构定义、训练流程…

📰

微机原理与接口技术 · 第4章《汇编语言及其程序设计》知识点

微机原理与接口技术 第4章《汇编语言及其程序设计》知识点梳理 本文整理自福州大学吴衔誉教授《微机原理与接口技术》第四章课件,系统讲解汇编语言简介、指令分类与条件域、寻址方式、Cortex-M3 指令集(数据传送 / 数据处理 / 跳转 / 其他)以…

📰

开源油藏模拟器OPM/Flow实战:安装部署与Eclipse差异化对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

CSS动效核心机制与高频效果实战解析

做前端这些年,我把大量时间都花在“让页面动起来”这件事上,沉淀下来的关键词也就两个:CSS动效。不管是给按钮加涟漪,还是给卡片加3D翻转,底层机制都逃不开两套东西:transition和animation。很多人看到效果…

📰

YOLOv8猴子检测权重训练:从数据集标注到模型部署全流程

简介:一套面向目标检测场景的猴子识别资源,包含YOLOv8预训练权重与配套数据集。资源整合了6000余张标注为Monkey的猴子图像,已按train、val、test划分完毕,并附有data.yaml配置文件和TXT格式的标签,可直接对接YOLOv5、…

📰

Cursor Opus极速模式值不值?TaoToken统一API通道实测与配置避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬