Python入门
  • Python入门
  • 0. 基础知识与安装
    • 0. 计算机基础知识
    • 1. Windows下安装
    • 2. 通过软件包管理器安装
    • 3. 通过源码安装
    • 4. 多版本管理
    • 5. Python的基础知识
    • 6. Python的内存管理
  • 1. 基本语法
  • 2. 内置数据结构
    • 1. 列表
    • 2. 元组
    • 3. 字符串
    • 4. bytes与bytearray
    • 5. 集合 (set)
    • 6. 字典
  • 3. 操作
    • 迭代与迭代器
    • 封装与解构
    • 解析式与生成器
    • 切片操作
    • del操作
  • 4. 函数
    • 1. 函数的定义与调用
    • 2. 函数的参数与参数解构
    • 3. 函数的返回值
    • 4. 函数的作用域
    • 5. 闭包
    • 6. 默认值的作用域
    • 7. 递归
  • 5. 高阶函数
    • 0. 柯里化
    • 1. 高阶函数
    • 2. 装饰器
    • 3. 参数注解
  • A. 内建函数
  • B. 算法
    • 1. 排序
      • 1.冒泡法排序
      • 2. 简单选择排序
      • 3. 二元选择排序
  • C. 模块
    • collections
    • copy
    • datetime
    • keyword
    • math
    • time
  • D. 习题
    • 九九乘法表
    • 打印菱形、三角形、闪电
    • 斐波那契数列
    • 求素数
    • 猴子吃桃
    • 杨辉三角
    • 转置矩阵
Powered by GitBook
On this page
  • 列表解析式
  • 语法
  • 返回值
  • 用处
  • 举例
  • 进阶用法
  • 生成器表达式
  • 语法
  • 返回值
  • 生成器对象
  • 与列表解析式的对比
  • 集合解析式
  • 语法
  • 返回值
  • 字典解析式
  • 语法
  • 返回值

Was this helpful?

  1. 3. 操作

解析式与生成器

列表解析式

语法

[返回值 for 元素 in 可迭代对象 if 条件]

使用中括号,内部是for循环,if条件语句可选。

返回值

一个新的列表

用处

简化代码,减少出错,因为是语法糖因此增加了效率。

举例

even = [x for x in range(10) if x % 2 == 0]

↑求10以内所有偶数。

进阶用法

if嵌套等价

[expr for item in iterable if condition1 if condition2]

for嵌套等价

[expr for item1 in iterable1 for item2 in iterable2 ]

生成器表达式

语法

(返回值 for 元素 in 可迭代对象 if 条件)

使用小括号,内部是for循环,if条件语句可选,不会立即返回列表,是惰性求值,只会返回生成器对象,写生成器的语句叫做生成器表达式。生成器表达式是用来生成生成器对象的。

返回值

一个生成器对象。

生成器对象

一个可迭代的迭代器对象

与列表解析式的对比

  • 计算方式

    • 生成器表达式惰性求值,列表解析式立即计算

  • 内存占用

    • 单纯从返回值来说,生成器表达式省内存。

    • 实际占用(累计)两者差距不大,生成器是多次少量占用,列表是一次性占用。

集合解析式

语法

{返回值 for 元素 in 可迭代对象 if 条件}

使用大括号,内部是for循环,if条件语句可选。

返回值

一个新的集合

字典解析式

语法

{返回值 for 元素 in 可迭代对象 if 条件}

使用大括号,内部是for循环,if条件语句可选,返回值是key:value 形式。

返回值

一个新的字典

Previous封装与解构Next切片操作

Last updated 6 years ago

Was this helpful?