文章目录
  • 一、列表推导式
  • 1、列表推导式 语法
  • 2、示例分析 - 基础用法
  • 3、示例分析 - 条件表达式用法
  • 4、示例分析 - 列表推导式嵌套用法
  • 5、示例分析 - 列表推导式嵌套用法等价代码







一、列表推导式




1、列表推导式 语法



Python 中的 列表推导式 List Comprehension 用于 从 一个现有的列表 创建 一个新列表 , 使用一行代码 即可 实现 循环 或 条件逻辑 , 生成新的 列表 ;



列表推导式 语法如下 :

new_list = [expression for item in iterable if condition]
  • 1.
  • iterable 参数 : 一个现有的列表
  • condition 参数 : 可选条件表达式
  • item 参数 :
  • 如果 没有 condition 参数 , 那么 item 就是 iterable 列表中的每一个元素 ;
  • 如果 有 condition 参数 , 那么 item 就是 iterable 列表中 符合 condition 条件 的元素 ;
  • expression 参数 : item 参与计算的 表达式 , 其中有 item 变量 ;

上述语法的等价代码 :

new_list = [expression for item in iterable if condition]
  • 1.

等价于 :

new_list = []
for item in iterable
	if condition
		new_list.append(expression)
  • 1.
  • 2.
  • 3.
  • 4.



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]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

执行结果 :

[3, 5, 7, 9, 11]
  • 1.

【Python】列表推导式 ( Python 列表推导式语法 | 列表推导式基础用法 | 列表推导式设置条件表达式用法 | 列表推导式嵌套用法 | 嵌套用法的等价代码分析 )_代码示例



3、示例分析 - 条件表达式用法



本示例中的 列表推导式

new_list = [x * 2 + 1 for x in original_list if x > 3]
  • 1.

比基础版 列表推导式 ,

new_list = [x * 2 + 1 for x in original_list]
  • 1.

增加了 条件表达式 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]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

执行结果 :

[9, 11]
  • 1.

【Python】列表推导式 ( Python 列表推导式语法 | 列表推导式基础用法 | 列表推导式设置条件表达式用法 | 列表推导式嵌套用法 | 嵌套用法的等价代码分析 )_python_02



4、示例分析 - 列表推导式嵌套用法



在 列表推导式

new_list = [(x, y) for x in original_list1 for y in original_list2]
  • 1.

中 , 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)]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

执行结果 :

[('a', 1), ('a', 2), ('b', 1), ('b', 2)]
  • 1.

【Python】列表推导式 ( Python 列表推导式语法 | 列表推导式基础用法 | 列表推导式设置条件表达式用法 | 列表推导式嵌套用法 | 嵌套用法的等价代码分析 )_嵌套_03



5、示例分析 - 列表推导式嵌套用法等价代码



在 列表推导式

new_list = [(x, y) for x in original_list1 for y in original_list2]
  • 1.

中 , 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) )
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.



代码示例 :

# 列表推导式

# 原始列表
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)]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

执行结果 :

[('a', 1), ('a', 2), ('b', 1), ('b', 2)]
  • 1.

【Python】列表推导式 ( Python 列表推导式语法 | 列表推导式基础用法 | 列表推导式设置条件表达式用法 | 列表推导式嵌套用法 | 嵌套用法的等价代码分析 )_嵌套_04