Python 推导式简介
发布时间:2023-06-27 10:21:53 所属栏目:教程 来源:
导读:如果需要生成一个长度为 3、内容为 0 的列表,可以使用如下的代码来完成这项任务:
list = [, , ]
如果需要生成一个长度为 100、内容为 0 的列表,使用如上的方式完成,需要在括号中书写 100 个 0,既繁琐又容易
list = [, , ]
如果需要生成一个长度为 100、内容为 0 的列表,使用如上的方式完成,需要在括号中书写 100 个 0,既繁琐又容易
如果需要生成一个长度为 3、内容为 0 的列表,可以使用如下的代码来完成这项任务: list = [, , ] 如果需要生成一个长度为 100、内容为 0 的列表,使用如上的方式完成,需要在括号中书写 100 个 0,既繁琐又容易出错,显然是不合适的。可以使用动态的方式完成这项任务: list = []for i in range():list.append() 在第 1 行,创建一个空的列表 在第 2 行,创建一个循环语句,循环 100 次 在第 3 行,在循环中,向列表添加元素 0 最终,list 包含 100 个整数 0 如果需要生成一个包含 0 到 100 之间(不包括 100)所有的偶数的列表,可以在以上的代码基础上进行修改,如下所示: list = []for i in range():if i % == :list.append(i) 在第 1 行,创建一个空的列表 在第 2 行,创建一个循环语句,循环 100 次 在第 3 行,检查循环变量 i 能否被 2 整除 在第 4 行,如果变量 i 能够被 2 整除,则表示变量 i 是偶数,将其加入到列表中 最终,list 包含 0 到 100 之间的所有的偶数 在 Python 编程中会碰到大量的创建列表的场景,使用如上的动态添加的方式可以完成这样的需求,但是代码不够简洁。Python 提供了列表推导的语法用于快速的构建一个列表,完成类似如下的任务: 生成一个包含 100 个整数 0 的列表 生成一个包含 0 到 100 之间的所有偶数的列表 类似的,Python 提供了集合推导的语法用于快速的构建一个集合,以及字典推导的语法用于快速的构建一个字典。 1. 列表推导 1.1 定义 1.1.1 定义 列表推导式对应的英文是 list comprehension,有时也被翻译为列表解析式,是一种创建列表的简洁语法。它的基本语法定义如下: [expression for item iteratable] 可以认为它使用如下代码创建了一个 list: list = []for item iteratable:list.append(expression) 在第 1 行,创建一个空的列表 在第 2 行,创建一个循环语句,遍历 iteratable 在第 3 行,在循环中,向列表添加元素 expression 1.1.2 例子 1 使用列表推导生成一个包含 4 个整数 0 的列表,代码如下: >>> [ for i in range()][, , , ] 等价于使用 append 方法创建列表,代码如下: >>> list = []>>> for i in range():... list.append()...>>> list[, , , ] 1.1.3 例子 2 使用列表推导生成一个包含 0 到 4 之间所有整数的列表,代码如下: >>> [i for i in range()][, , , ] 等价于使用 append 方法创建列表,代码如下: >>> list = []>>> for i in range():... list.append(i)...>>> list[, , , ] 1.2 条件语句 在基本的列表推导中,将 for 循环遍历的全部元素加入到列表中,可以在 for 循环之后添加 if 语句用于选择元素,它的语法定义如下: [expression for item iteratable if condition] 可以认为它使用如下代码创建了一个 list: list = []for item iteratable:if condition:list.append(expression) 注意,在第 3 行,只有满足条件,才会将元素添加到列表中。 使用列表推导生成一个包含 0 到 4 之间所有偶数的列表,使用 if i % 2 == 0 选择将偶数加入到列表,代码如下: >>> [i for i in range() if i % == ][, ] 等价于使用 append 方法创建列表,代码如下: >>> list = []>>> for i in range():... if i % == :... list.append(i)...>>> list[, ] 1.3 for 循环嵌套 列表推导中允许 for 循环嵌套,它的语法定义如下: [expression for x in X for y in Y] 可以认为它使用如下代码创建了一个 list: list = []for x in X:for y in Y:list.append(expression) 使用列表推导生成一个包含两个字符的字符串列表,代码如下: >>> [x + y for x in 'ABC' for y in 'XYZ']['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ'] 等价于使用 append 方法创建列表,代码如下: >>> list = []>>> for x in 'ABC':... for y in 'XYZ':... list.append(x + y)...>>> list['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ'] 在第 1 行,创建了一个空列表 在第 2 行,在外循环中,遍历字符串 ‘ABC’ 中的 3 个字符 ‘A’、‘B’ 和 ‘C’,循环变量 x 依次为’A’、‘B’ 和 ‘C’ 在第 3 行,在内循环中,遍历字符串 ‘XYZ’ 中的 3 个字符 ‘X’、‘Y’ 和 ‘Z’,循环变量 y 依次为’X’、‘Y’ 和 ‘Z’ 在第 4 行,将表达式 x + y 作为元素添加到列表中 1.4 应用举例 初始化长度为 10 的列表 >>> [ for i in range()][, , , , , , , , , ] 将列表中的元素乘以 10 >>> list = [, , ]>>> [i* for i in list][, , ] 将列表中所有的字符串变成大写 >>> list = ['www', 'imooc', 'com']>>> [i.upper() for i in list]['WWW', 'IMOOC', 'COM'] 包含所有的正整数的列表 >>> list = [-, , -, , -, ]>>> [i for i in list if i > ][, , ] 初始化生成一个 M*N 的矩阵 >>> M = >>> N = >>> matrix = [[ for col in range(N)] for row in range(M)]>>> matrix[[,,], [,,]] 在第 1 行,设定矩阵的行数 M 为 2 在第 2 行,设定矩阵的列数 N 为 3 在第 3 行,生成一个 2 行 3 列的矩阵 [0 for col in range (N)],生成包含 3 个元素的一维向量 [[…] for row in range (M)],生成包含 2 个一维向量的矩阵 将矩阵平坦化 >>> matrix = [[,,],[,,]]>>> matrix2 = [matrix[row][col] for row in range() for col in range()]>>> matrix2[,,,,,] 在第 1 行,生成一个 2 行 3 列的矩阵 矩阵的第 1 行为 [1,2,3] 矩阵的第 2 行为 [4,5,6] 在第 2 行,将矩阵平坦化 for row in range (2) 遍历矩阵的行 for col in range (3) 遍历矩阵的列 matrix [row][col] 获取矩阵中指定位置的元素,将该元素放置在一个列表中 在的 3 行,得到一个平坦化的列表 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |