首页 > Python资料 博客日记
【Python】列表推导式 ( Python 列表推导式语法 | 列表推导式基础用法 | 列表推导式设置条件表达式用法 | 列表推导式嵌套用法 | 嵌套用法的等价代码分析 )
2024-09-10 05:00:06Python资料围观62次
一、列表推导式
1、列表推导式 语法
Python 中的 列表推导式 List Comprehension 用于 从 一个现有的列表 创建 一个新列表 , 使用一行代码 即可 实现 循环 或 条件逻辑 , 生成新的 列表 ;
列表推导式 语法如下 :
new_list = [expression for item in iterable if condition]
- iterable 参数 : 一个现有的列表 , 可以迭代的对象 , 比如 列表、元组、字符串等 ;
- condition 参数 : 可选条件表达式 , 用于过滤 iterable 中的元素 , iterable 列表中 只有 满足 该条件的 元素 , 才会 被 作为 item 参与 expression 表达式计算 ;
- item 参数 :
- 如果 没有 condition 参数 , 那么 item 就是 iterable 列表中的每一个元素 ;
- 如果 有 condition 参数 , 那么 item 就是 iterable 列表中 符合 condition 条件 的元素 ;
- expression 参数 : item 参与计算的 表达式 , 其中有 item 变量 ;
上述语法的等价代码 :
new_list = [expression for item in iterable if condition]
等价于 :
new_list = []
for item in iterable
if condition
new_list.append(expression)
2、示例分析 - 基础用法
下面的示例中 , 给出的原始列表 original_list = [1, 2, 3, 4, 5]
,
并且使用列表表达式 new_list = [x * 2 + 1 for x in original_list]
推导出了新的列表 ;
上述列表表达式 没有 给出 条件表达式 , 也就是说 original_list
原始列表 中所有的元素都参与运算 , x
就是 原始列表 中的元素 ;
原始列表 中的 所有的 元素 x , 都参与 x * 2 + 1
表达式计算 , 计算出的结果就是 新列表 中的元素 ;
代码示例 :
# 列表推导式
# 原始列表
original_list = [1, 2, 3, 4, 5]
# 使用 列表推导式 推导出新列表
new_list = [x * 2 + 1 for x in original_list]
# 打印新列表
print(new_list) # 输出: [3, 5, 7, 9, 11]
执行结果 :
[3, 5, 7, 9, 11]
3、示例分析 - 条件表达式用法
本示例中的 列表推导式
new_list = [x * 2 + 1 for x in original_list if x > 3]
比基础版 列表推导式 ,
new_list = [x * 2 + 1 for x in original_list]
增加了 条件表达式 x > 3
, 凡是 original_list
列表中的 大于 3 的元素 , 才能参与 x * 2 + 1
表达式运算 ;
代码示例 :
# 列表推导式
# 原始列表
original_list = [1, 2, 3, 4, 5]
# 使用 列表推导式 推导出新列表
new_list = [x * 2 + 1 for x in original_list if x > 3]
# 打印新列表
print(new_list) # 输出: [9, 11]
执行结果 :
[9, 11]
4、示例分析 - 列表推导式嵌套用法
在 列表推导式
new_list = [(x, y) for x in original_list1 for y in original_list2]
中 , for x in original_list1
是 外层的循环 , for y in original_list2
是 内层的循环 ,
外层循环的元素是 original_list1 = ['a', 'b']
, 内层循环的元素是 original_list2 = [1, 2]
,
因此最后输出的结果是 [('a', 1), ('a', 2), ('b', 1), ('b', 2)]
;
如果将 内外层 循环 改变顺序 , 将 for y in original_list2
设置成 外层循环 , 将 for x in original_list1
设置成内层循环 , 则得到的输出结果是 [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
;
代码示例 :
# 列表推导式
# 原始列表
original_list1 = ['a', 'b']
original_list2 = [1, 2]
# 使用 列表推导式 推导出新列表
# for x in original_list1 是外层循环
# for y in original_list2 是内层循环
new_list = [(x, y) for x in original_list1 for y in original_list2]
# 打印新列表
print(new_list) # 输出: [('a', 1), ('a', 2), ('b', 1), ('b', 2)]
执行结果 :
[('a', 1), ('a', 2), ('b', 1), ('b', 2)]
5、示例分析 - 列表推导式嵌套用法等价代码
在 列表推导式
new_list = [(x, y) for x in original_list1 for y in original_list2]
中 , for x in original_list1
是 外层的循环 , for y in original_list2
是 内层的循环 ,
(x, y)
是 内存循环 的 循环体 中 , 向 new_list 列表中 append 添加的元素 , 循环体内容是 new_list.append( (x,y) )
;
最终将 列表推导式 转为 普通的 循环代码 , 等价代码如下 :
new_list = []
for x in original_list1:
for y in original_list2:
new_list.append( (x,y) )
代码示例 :
# 列表推导式
# 原始列表
original_list1 = ['a', 'b']
original_list2 = [1, 2]
# 使用 列表推导式 推导出新列表
# for x in original_list1 是外层循环
# for y in original_list2 是内层循环
# new_list = [(x, y) for x in original_list1 for y in original_list2]
# 等同于上述 列表推导式的代码 :
new_list = []
for x in original_list1:
for y in original_list2:
new_list.append( (x,y) )
# 打印新列表
print(new_list) # 输出: [('a', 1), ('a', 2), ('b', 1), ('b', 2)]
执行结果 :
[('a', 1), ('a', 2), ('b', 1), ('b', 2)]
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程