Python 中的推导式
2024-03-11 19:40 abce 阅读(56) 评论(0) 编辑 收藏 举报python中主要在列表、字典和集合中使用推导式。
推导式就是对数据集(无论是列表、字典还是集合)的操作,一般只需要几行代码,可以将其收缩到一行或多行,从而提高可读性并使代码紧凑。
常见的推导式有:
·列表推导式
·字典推导式
·集合推导式
·生成器推导式
列表推导式
列表推导式一种从现有列表创建新列表的更快、更简洁的方法。与使用循环和函数进行的常规操作相比,列表推导式通常更快。
列表推导式的基本语法是:
1 | output_list = [expression for variable in input_list if (condition)] |
这里:
·expression:列表生成元素表达式,可以是有返回值的函数。
·for variable in input_list:迭代 input_list 将 variable 传入到 expression 表达式中。
·if condition:条件语句,可以过滤列表中不符合条件的值。
假设我们想从已存在的列表创建一个只包含偶数的新列表,在没有使用推导式的时候,可能会这样做:
1 2 3 4 5 6 | 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]
通过列表推导式,可以收缩代码:
1 2 3 | 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]
字典推导式
与列表推导式一样,我们使用字典推导式从列表中创建新字典。通过字典推导式,我们可以缩减代码,提高代码的可读性,使代码更加紧凑。
在开始字典推导式之前,我们首先要记住字典的基本结构和特点。也就是说,字典是使用键、值对映射的。
字典推导式的基本语法是:
1 | output_dictionary = { key :value for ( key , value) in list if (condition)} |
假设我们要创建一个包含键的平方作为值的字典。如果不使用字典推导式,我们可以这样写:
1 2 3 4 5 | 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}
通过推导式,可以将代码缩减成:
1 2 3 | 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) |
也可以在推导式中加上判断条件:
1 2 3 | 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) |
集合推导式
集合推导式与列表推导式类似。
集合推导式的基本语法是:
1 | output_set = {expression for variable in input_list if (condition)} |
假设我们要创建一个集合,消除列表中的重复值。
1 2 3 4 5 | 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) |
通过字典推导式就可以写成这样:
1 2 3 | set_list = [ 'A' , 'S' , 'P' , 'A' , 'R' , 'A' , 'G' , 'U' , 'S' ] output_set = {element for element in set_list} print(output_set) |
生成器推导式
生成器推导式与列表推导式类似,但使用圆括号。与列表推导式相比,生成器推导式的效率要高得多,因为它们为每个值分配内存,而不是为整个列表分配内存。
生成器推导式的基本语法是:
1 | output_generator = (expression for variable in input_list if (condition)) |
让我们来看一个生成器推导式的示例。在这里,我们要从输入列表中创建一个偶数生成器。
1 2 3 4 5 6 | 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) |
输出结果:
1 2 3 4 5 6 7 | <generator object <genexpr> at 0x0000013D83CF3AE0> <class 'generator' > 2 4 6 8 10 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2022-03-11 MySQL表碎片整理
2021-03-11 MySQL的binlog_row_image和PostgreSQL的full_page_writes
2017-03-11 Python - 列表生成式/生成器表达式
2016-03-11 Mongodb - TTL(time to live)特性