首页 > 编程语言 >Python学习之推导式

Python学习之推导式

时间:2024-07-18 19:25:28浏览次数:17  
标签:推导 Python 生成器 列表 学习 condition expression 表达式

目录

一、列表推导式

二、集合推导式

三、字典推导式

四、元组推导式


一、列表推导式

[expression for item in iterable if condition]

介绍:(1)expression:生成元素的表达式。
(2)item:可迭代对象中的每个元素。
(3)iterable:可迭代对象,如列表、元组、字符串等。
(4)condition(可选):筛选条件,用于过滤元素。

例子:

例一:
# 第一部分 是表达式语句
# 第二部分 是for循环
# 第三部分 条件(可选) 只有满足条件 才将表达式结果放入列表


import random

l2 = [random.randint(0, 10) * i for i in range(10) if i == 1 or i == 5]
print(l2)

# 随机生产两个数的列表


例二:
options = [str(i) for i in range(17)]
print(options)

二、集合推导式

集合推导式类似于列表推导式,但创建的是集合,语法结构为:

{expression for item in iterable if condition}

介绍:(1)expression:是一个计算结果的表达式,用来生成集合中的每个元素。
(2)item:是可迭代对象(例如列表、元组、字符串)中的每个元素。
(3)iterable:是可迭代对象本身。
(4)condition(可选):是一个筛选条件,用于过滤要包含在最终集合中的元素。

例子:

# 集合推导式
# 第一个部分是元素
# 第二部分是循环
# 第三部分是条件
s0 = {i for i in range(10) if i % 3 == 0}
print(s0, type(s0))  # 集合

三、字典推导式

字典推导式允许通过简洁的方式创建字典,语法结构为:

{key_expression: value_expression for item in iterable if condition}

介绍:(1)key_expression:生成字典键的表达式。
(2)value_expression:生成字典值的表达式。
(3)item、iterable和condition 的含义与列表推导式相同。

例子:

# 字典推导式
# 第一部分是关于键和值格式的表达式
# 第二部分是循环
# 第三部分是条件


d0 = {f"key{i}": i ** 2 for i in range(10) if i % 2 == 0}
print(d0, type(d0))

四、元组推导式

动态生成元组,可以通过生成器表达式(Generator Expression)来间接实现类似的功能。生成器表达式与推导式类似,但使用圆括号而不是方括号,并返回一个生成器对象而不是列表。

# 元组推导式:得到一个生成器, 可以通过遍历获取生成器内容
g0 = (i ** 2 for i in range(10) if i % 2 == 1)
print(g0, type(g0))    # 生成器对象
for e in g0:
    print(e)

总结:

(1)推导式可以嵌套,但应当谨慎使用以避免代码变得难以理解。
(2)推导式可以包含多个 for 子句和 if 条件,但通常应保持简洁明了以便于阅读和维护。
(3)在使用推导式时要注意内存消耗,尤其是处理大数据集时,推导式可能会比传统循环更快但也可能消耗更多内存。

标签:推导,Python,生成器,列表,学习,condition,expression,表达式
From: https://blog.csdn.net/qq_62757859/article/details/140530787

相关文章

  • 扩展 KMP/exKMP(Z 函数)学习笔记
    声明本文章转载自shangruolin的博客,已经过作者(存疑)同意,帮TA宣传一下。扩展KMP/exKMP(Z函数)学习笔记兼P10479匹配统计题解。LCP:最长公共前缀。Z函数,又称扩展KMP(exKMP),能够在\(O(n)\)的时间内求出一个字符串与其所有后缀的LCP的长度。定义\(z_i\)为字符串\(s\)......
  • python gradio 的输出展示组件
    HTML:展示HTML内容,适用于富文本或网页布局。JSON:以JSON格式展示数据,便于查看结构化数据。KeyValues:以键值对形式展示数据。Label:展示文本标签,适用于简单的文本输出。Markdown:支持Markdown格式的文本展示。Plot:展示图表,如matplotlib生成的图表。Text:用于显示文本,适合较长的输出。......
  • 小白学习微信小程序开发中的用户登录与授权
    用户登录与授权是微信小程序开发中非常重要的内容,本文将详细介绍如何实现用户登录和授权的功能。我们将使用微信小程序提供的登录和授权接口,结合实际代码案例进行说明。一、用户登录创建登录按钮用户登录的第一步是创建一个登录按钮,用户点击该按钮后将触发登录操作。在小程......
  • 基于Python语言的入门算法和数据结构(持续更新中,求关注一波)[链表 栈 队列 复杂度 操作]
    这篇文章主要是讲的Python语言的算法,本人还在不断记笔记中,文章也会持续更新,内容比较浅薄,请大家指教另外推荐一个比较好用的记笔记的软件Typora,自己已经使用很久了,感觉不错。。。虽然但是还是有欠缺。目录第一章算法概述1.1什么是数据结构?01数据结构都有哪些组成方式02......
  • Datawhale AI 夏令营——CPU部署大模型(LLM天池挑战赛)——Task2与3学习笔记
        Task2的任务是组队+寻找灵感,这里不作阐述;Task3的任务是实现RAG应用,阅读文档并观看卢哥的直播后,结合个人经验做个分享。    运行大语言模型,对LLM使用的加深,我们发现,在使用过程中,大模型会有很多幻觉出现。为了解决幻觉,科研人员提出了各种各样的方案......
  • Flowable流程引擎学习实践
    实操版本V6.7.2一、Flowable是什么Flowable是一个使用Java编写的轻量级业务流程引擎,使用ApacheV2license协议开源。2016年10月,Activiti工作流引擎的主要开发者离开Alfresco公司并在Activiti分支基础上开启了Flowable开源项目。基于Activitiv6beta4发布......
  • 无法在 Rasp pi 4B 上安装 python 库
    :~$sudopipinstall序列号错误:外部管理环境×该环境是外部管理的╰─>要在系统范围内安装Python软件包,请尝试aptinstallpython3-xyz,其中xyz是您要尝试的包安装。Ifyouwishtoinstallanon-Debian-packagedPythonpackage,createavirtualenvironme......
  • STL学习总结
    常用容器string容器基本概念string是C++风格的字符串,本质上是一个类。其内部封装了char*。成员函数主要有find,copy,delete,replace,insert构造函数string();//生成空stringstring(constchar*s);//以字符串s初始化string(conststring&str);//以string对......
  • OI学习笔记(C++)
    笔记完整版链接参照oi.wiki整理了基础dp的一些笔记:学习笔记+模板(Adorable_hly)(自己结合网络和做题经验总结的,dalao勿喷)第一大板块:DP动态规划适用场景:1.最优化原理:若该问题所包含的子问题解是最优的,就称该问题具有最优子结构,满足最优化原理。2.无后效性:指某一阶段的状......
  • python学习之---迭代器与生成器
    什么是迭代器可迭代对象:可以通过for循环来实现遍历,例如list、string、dict迭代器:不仅可以使用for循环,还可以使用next()方法、__iter__()next():获取容器中的下一个元素,当容器中没有可访问的元素后,next()方法将会抛出一个StopIteration异常终止迭代器iter():内建函数获取......