首页 > 编程语言 >Python 中的推导式

Python 中的推导式

时间:2024-03-11 19:44:40浏览次数:26  
标签:推导 Python list 列表 key output 字典

python中主要在列表、字典和集合中使用推导式。

推导式就是对数据集(无论是列表、字典还是集合)的操作,一般只需要几行代码,可以将其收缩到一行或多行,从而提高可读性并使代码紧凑。

 

常见的推导式有:

·列表推导式

·字典推导式

·集合推导式

·生成器推导式

列表推导式

列表推导式一种从现有列表创建新列表的更快、更简洁的方法。与使用循环和函数进行的常规操作相比,列表推导式通常更快。

列表推导式的基本语法是:

output_list = [expression for variable in input_list if (condition)]

这里:

·expression:列表生成元素表达式,可以是有返回值的函数。

·for variable in input_list:迭代 input_list 将 variable 传入到 expression 表达式中。

·if condition:条件语句,可以过滤列表中不符合条件的值。

 

假设我们想从已存在的列表创建一个只包含偶数的新列表,在没有使用推导式的时候,可能会这样做:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_list = []
for x in list:
    if x % 2 == 0:
        even_list.append(x)
        print(even_list)

最终输出的结果列表是:[2, 4, 6, 8, 10]

 

通过列表推导式,可以收缩代码:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_list = [x for x in list if x % 2 == 0]
print(even_list)

获得同样的结果列表:[2, 4, 6, 8, 10]

字典推导式

与列表推导式一样,我们使用字典推导式从列表中创建新字典。通过字典推导式,我们可以缩减代码,提高代码的可读性,使代码更加紧凑。

在开始字典推导式之前,我们首先要记住字典的基本结构和特点。也就是说,字典是使用键、值对映射的。

字典推导式的基本语法是:

output_dictionary = {key:value for (key, value) in list if (condition)}

假设我们要创建一个包含键的平方作为值的字典。如果不使用字典推导式,我们可以这样写:

key_list = [1, 2, 3, 4, 5, 6 ,7, 8, 9, 10]
output_dictionary = {}
for key in key_list:
    output_dictionary[key] = key**2
    print(output_dictionary)

输出结果是:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

 

通过推导式,可以将代码缩减成:

key_list = [1, 2, 3, 4, 5, 6 ,7, 8, 9, 10]
output_dictionary = {key: key**2 for key in key_list}
print(output_dictionary)

也可以在推导式中加上判断条件:

key_list = [1, 2, 3, 4, 5, 6 ,7, 8, 9, 10]
output_dictionary = { key: key**2 for key in key_list if key % 2 == 0}
print(output_dictionary)

集合推导式

集合推导式与列表推导式类似。

 

集合推导式的基本语法是:

output_set = {expression for variable in input_list if (condition)}

假设我们要创建一个集合,消除列表中的重复值。

set_list = ['A', 'S', 'P', 'A', 'R', 'A', 'G', 'U', 'S']
output_set = set()
for element in set_list:
    output_set.add(element)
print(output_set)

通过字典推导式就可以写成这样:

set_list = ['A', 'S', 'P', 'A', 'R', 'A', 'G', 'U', 'S']
output_set = {element for element in set_list}
print(output_set)

生成器推导式

生成器推导式与列表推导式类似,但使用圆括号。与列表推导式相比,生成器推导式的效率要高得多,因为它们为每个值分配内存,而不是为整个列表分配内存。

生成器推导式的基本语法是:

output_generator = (expression for variable in input_list if (condition))

让我们来看一个生成器推导式的示例。在这里,我们要从输入列表中创建一个偶数生成器。

input_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
output_generator = (var for var in input_list if var % 2 == 0)
print(output_generator)
print(type(output_generator))
for v in output_generator:
    print(v)

输出结果:

<generator object <genexpr> at 0x0000013D83CF3AE0>
<class 'generator'>
2
4
6
8
10

标签:推导,Python,list,列表,key,output,字典
From: https://www.cnblogs.com/abclife/p/18065612

相关文章

  • Python 初学者容易踩的 5 个坑
    哈喽大家好,我是咸鱼。今天咸鱼列出了一些大家在初学Python的时候容易踩的一些坑,看看你有没有中招过。原文:https://www.bitecode.dev/p/unexpected-python-traps-for-beginners不明显的字符串拼接Python在词法分析的时候会把多个字符串自动拼接起来。data="very""lazy"p......
  • 【Python使用】python高级进阶知识md总结第3篇:静态Web服务器-返回指定页面数据,静态We
    python高级进阶全知识知识笔记总结完整教程(附代码资料)主要内容讲述:操作系统,虚拟机软件,Ubuntu操作系统,Linux内核及发行版,查看目录命令,切换目录命令,绝对路径和相对路径,创建、删除文件及目录命令,复制、移动文件及目录命令,终端命令格式的组成,查看命令帮助。HTTP请求报文,HTTP响应报文......
  • python爬虫scrapy之如何同时执行多个scrapy爬行任务
    来源:https://www.shanhubei.com/archives/23601.html1、顺序执行:fromscrapy.cmdlineimportexecuteexecute(['scrapy','crawl','httpbin'])2、同时进行setting=get_project_settings()process=CrawlerProcess(setting)didntWo......
  • Python实现企业微信自动打卡程序二:跳过节假日,随机打卡时间,定时任务,失败通知
    一、介绍在上节Python实现企业微信上下班自动打卡程序内容之后,我们继续优化自动打卡程序。接下来增加如下内容:实现打卡时间随机范围处理节假日不打卡的情况实现定时调度打卡打卡成功或失败通知自己二、实现打卡时间随机范围既然我们程序写完后需要定时执行,那定时执行打......
  • Logstash接收udp/tcp数据 python+ udp/tcp +logstash +elasticsearch
    Logstash接收udp/tcp数据背景:在 Logstash数据源为日志文件操作 基础上进行一、配置文件1.D:\usr\local\etc\logstash\pipeline1目录下logstash.conf文件配置input{stdin{}udp{host=>"0.0.0.0"#从5000端口获取日志port=>5000......
  • C# 启动 Python 不能及时获取输出信息
    结论:在print函数前加上sys.stdout.flush()。有的说加载print之后,都可以试试。fromtimeimportsleepimportsysif__name__=="__main__":sys.stdout.flush()print("Start")foriinrange(10000):#sys.stdout.write(str(i))sys.stdo......
  • python的一些设置
    一1全局设置pip加速。查找pip.ini文件,添加以下代码[global]index-url=http://pypi.tuna.tsinghua.edu.cn/simple/[install]trusted-host=pypi.tuna.tsinghua.edu.cn2执行poetryinstall命令单个项目:pyproject.toml文件加入以下内容可以加速[[tool.poetry.sourc......
  • Python - PyCharm支持的4种Python Interpreter和配置方法
    原文地址https://blog.csdn.net/qq_41498261/article/details/109112331 1.VirtualenvEnvironment1.1VirtualenvEnvironment是什么?1.2如何使用VirtualenvEnvironment?1.2.1.Newenvironment1.2.2.Existingenvironment2.CondaEnvironment2.1CondaEnvironment是什么......
  • python 有关于四舍五入,四舍六入的内容
    一、简介二、内容三、问题 一、简介最近看书看到了,有关python 内置的函数round取小数点的问题。书上描述的是四舍五入,然后又说,‘四舍五入’只是个约定的说法,并非所有的.5都会被进位。然后我再上网查了下,才知道,之前使用的四舍五入后面,还有个四舍六入五成双......
  • linux 通过python 命令定时删除文件,不通过crontab
    importosimporttimelog_dir="/var/log/"defdelete_expired_logs():current_time=time.localtime()print(current_time.tm_hour)ifcurrent_time.tm_hour==12andcurrent_time.tm_min==30:print('xxxxxxxxxx')......