当前位置: 首页 > news >正文

python-23-一篇文章帮你理解Python推导式

python-23-一篇文章帮你理解Python推导式

一.简介

在 Python 中,推导式(Comprehensions)是一个简洁的语法,用于通过某种可迭代对象快速生成新的对象(如列表、字典、集合等!来开始我们今天的日拱一卒!

二.推导式基本语法

expression for item in iterable if condition

  • expression:用于生成列表元素的表达式。
  • item:可迭代对象中的每个元素。
  • iterable:可迭代对象(例如,列表、字符串、元组等)。
  • condition:可选的条件,只有满足条件的元素才会被包含在新列表中。

三.列表推导式(List Comprehension)

列表推导式允许我们用一种简洁的方式基于一个可迭代对象生成一个新列表。基本语法是:

[expression for item in iterable if condition]

示例

numbers = [1, 2, 3, 4, 5]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)
# 输出: [4, 16]

四.字典推导式(Dict Comprehension)

基本语法是:

{key_expression: value_expression for item in iterable if condition}
  • key_expression:字典的键。

  • value_expression:字典的值。

示例

numbers = [1, 2, 3, 4, 5]
filtered_dict = {x: x**2 for x in numbers if x**2 > 10}
print(filtered_dict)
# 输出: {4: 16, 5: 25}

五.集合推导式(Set Comprehension)

基本语法是:

{expression for item in iterable if condition}

示例:

numbers = [1, 2, 3, 4, 5]
filtered_set = {x**2 for x in numbers if x**2 > 10}
print(filtered_set)
# 输出: {16, 25}

五.生成器推导式(Generator Expression)

这个要注意,生成器推导式 返回的是一个生成器对象,只有在需要时才会生成数据!那么疑问来了,使用场景是什么?比如我需要一个列表用于计算,比如求和,列表包含10亿的整数元素,怎么办?直接生成列表?完蛋内存爆炸!!!!

这个时候就需要生成器来生成这个,按照需要给你这个范围内的数据,即不占用大量内存,又能解决实际问题!

成器推导式通常与 for 循环、next() 函数或者 sum() 等函数配合使用。

基本语法:

(expression for item in iterable if condition)

示例:

numbers = [1, 2, 3, 4, 5]
squared_gen = (x**2 for x in numbers)# 使用 for 循环逐个获取生成器的值
for square in squared_gen:print(square)
# 输出: 1, 4, 9, 16, 25numbers = [1, 2, 3, 4, 5]
squared_gen = (x**2 for x in numbers)
print(sum(squared_gen))  # 输出: 55

六.总结

Python基础系列的推导式,就介绍到这里,应该能帮助大家轻松掌握Python中的推导式!偷个懒,睡觉~~~

创作整理不易,请大家多多关注 多多点赞,有写的不对的地方欢迎大家补充,我来整理,再次感谢!

http://www.lryc.cn/news/479002.html

相关文章:

  • WPF中如何简单的使用CommunityToolkit.Mvvm创建一个项目并进行 增删改查
  • CesiumJS 案例 P15:检测标记、鼠标点击移动标记、鼠标拖动标记
  • Webserver(4.9)本地套接字的通信
  • [IAA系列] Image Aesthetic Assessment
  • 基于springboot的高校科研管理系统(源码+调试+LW)
  • Flutter环境配置
  • Rip动态路由及Rip动态路由优化
  • 双路快速排序和三路排序算法
  • SQL server增删改查语句和实例
  • 强化学习_06_pytorch-PPO2实践(ALE/Breakout-v5)
  • 《JVM第8课》垃圾回收算法
  • SpringBoot整合Freemarker(二)
  • element plus el-form自定义验证输入框为纯数字函数
  • Android笔记(三十一):Deeplink失效问题
  • 图神经网络初步实验
  • 创建线程时传递参数给线程
  • 兴业严选|美国总统都是不良资产出身 法拍市场是否将大众化
  • C#-拓展方法
  • 加锁失效,非锁之过,加之错也|京东零售供应链库存研发实践
  • vue3 传值的几种方式
  • AUTOSAR CP NVRAM Manager规范导读
  • 2024阿里云CTF Web writeup
  • 软件著作权申请教程(超详细)(2024新版)软著申请
  • 三维测量与建模笔记 - 3.2 直接线性变换法标定DLT
  • Whisper AI视频(音频)转文本
  • 全网最详细RabbitMQ教学包括如何安装环境【RabbitMQ】RabbitMQ + Spring Boot集成零基础入门(基础篇)
  • esp32记录一次错误
  • Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载
  • java-web-苍穹外卖-day1:软件开发步骤简化版+后端环境搭建
  • 一个国产 API 开源项目,在 ProductHunt 杀疯了...