当前位置:首页>python>Python开发从零开始-27-基础语法(推导式)

Python开发从零开始-27-基础语法(推导式)

  • 2026-09-08 19:25:30
Python开发从零开始-27-基础语法(推导式)

Python 推导式(Comprehension)是一种简洁、优雅的语法结构,允许使用单行代码快速创建列表、字典、集合或生成器。推导式基于现有的可迭代对象,通过表达式和条件语句来生成新的数据集合,不仅让代码更加简洁易读,而且较传统的循环方式执行效率更高。本文小编与大家分享 Python 推导式的相关知识。

Python 支持推导式包括:列表(list)推导式、字典(dict)推导式、集合(set)推导式和元组(tuple)推导式。

一、列表推导式

列表推导式是最为常见的形式,用于创建新的列表。其基本语法为:

[表达式 for 变量in可迭代对象if条件]

  • 表达式:生成元素表达式,可以是有返回值的函数;

  • for 变量 in 可迭代对象:使用变量遍历可迭代对象,并将变量传入到表达式中;

  • if 条件(可选):条件语句,将符合条件的变量传入表达式中。

(一)不带条件的列表推导式

编程示例如下:

在该编程示例中:

list1 = [x + 1 for x in range(100,110)]

  • x + 1 ,表达式;

  • for x in range(100,110) ,使用变量 x 遍历 range(100, 110),并将 x 传入 x + 1 表达式中;

  • list1 列表完成创建。列表元素为:

[101, 102, 103, 104, 105, 106, 107, 108, 109, 110]

(二)带条件的列表推导式

编程示例如下:

二、字典推导式

字典推导式用于创建字典,基本语法与列表推导式类似:

{键表达式 : 值表达式 for 变量in可迭代对象if条件}
  • 键表达式:生成字典中键的表达式;
  • 值表达式:生成与字典中键匹配的值的表达式;
  • for 变量 in 可迭代对象:使用变量遍历可迭代对象,并将变量传入到键表达式和值表达式中;
  • if 条件(可选):条件语句,将符合条件的变量传入到键表达式和值表达式中。

使用一个例子说明字典推导式用法:将列表中各字符串值为键,各字符串的长度为值,组成键值对。编程示例如下:

三、集合推导式

集合推导式用于创建集合,会自动去除重复元素。其基本语法为:

{表达式 for变量in可迭代对象if条件}

  • 表达式:生成集合元素表达式;

  • for 变量 in 可迭代对象:使用变量遍历可迭代对象,并将变量传入到表达式中;

  • if 条件(可选):条件语句,将符合条件的变量传入表达式中;

  • 集合推导式会元素自动去重。

下面以一个例子说明集合推导式用法:判断字符串中不是 abc 的字母并输出(注意:重复的集合元素会去除)。编程示例如下:

集合推导式和字典推导式在语法上非常相似,都使用大括号{}。区别在于,集合推导式中的表达式不包含键值对。

四、元组推导式

元组推导式(生成器推导式)和列表推导式的用法基本相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。基本语法为:

(表达式 for 变量 in 可迭代对象 if 条件)

  • 表达式:生成元素表达式;

  • for 变量 in 可迭代对象:使用变量遍历可迭代对象,并将变量传入到表达式中;

  • if 条件(可选):条件语句,将符合条件的变量传入表达式中;

  • 返回生成器对象,所以更为节省内存。

编程示例如下:

五、嵌套推导式

嵌套推导式是 Python 推导式的一种高级用法,其核心是将一个推导式嵌套在另一个推导式中,通常用于处理多维数据结构。例如,给定一个矩阵,可以通过嵌套推导式实现行列转换:

嵌套推导式在处理多维数组、矩阵操作以及复杂数据筛选时非常有用。但在使用时需要注意代码的可读性,避免过于复杂的嵌套导致难以理解。

六、推导式的优缺点和注意事项

(一)优缺点

  • 优势‌:‌代码更简洁、可读性高(如果逻辑清晰)、执行效率通常优于等价传统循环‌(因底层用 C 优化),并支持嵌套条件与多层迭代;‌生成器推导式还具备内存高效、惰性求值‌,适合大数据流处理。

  • ‌缺点‌:‌复杂逻辑(如多层嵌套、冗长条件)严重降低可读性和可维护性‌,‌调试困难‌(断点难设、异常定位难);‌

(二)注意事项

  • 推导式适合‌映射、过滤等单一转换操作‌;一旦逻辑超过一行清晰表达的范围,应优先选用传统 for 循环以保可读性;

  • 注意内存使用,大数据处理应考虑使用生成器推导式;

  • 推导式应避免副作用操作,“推导式副作用”指在 Python 推导式中执行具有外部状态变更的操作(如 print()、修改全局变量、I/O 等),虽语法合法,但违背推导式“纯表达式生成新数据”的设计初衷,导致代码不可读、难调试且易出错;

最新文章

随机文章