美文网首页
Python 列表解析式 - 生成器表达式

Python 列表解析式 - 生成器表达式

作者: __RY__ | 来源:发表于2018-08-17 11:23 被阅读22次

列表解析式

  • 语法

    • [ 返回值 for 元素 in 可迭代对象 if 条件 ]
    • 使用中括号[],内部是for循环,if 条件语句可选
    • 返回一个新的列表
  • 列表解析式是一种语法糖

    • 编译器会优化,不会因为简写而简写影响效率,反而因优化提高了效率
    • 减少程序员工作量,减少出错
    • 简化了代码,但可读性增强

生成器表达式

  • 语法

    • ( 返回值 for 元素 in 可迭代对象 if 条件 )
    • 列表解析式的中括号换成小括号()就行了
    • 返回一个生成器
  • 和列表解析式的区别

    • 生成器表达式是按需求计算(或称惰性求值、延迟计算),需要的时候才计算值

    • 列表解析式是立即返回值

    • 计算方式

      • 生成器(延迟计算、返回迭代器、从前到后走完一遍,不能回头)
      • 列表解析式(立即计算、返回的不是迭代器,返回可迭代对象列表,从前到后走完一遍后,可以重新回头迭代)
    • 内存占用

      • 单从返回值本身来说,生成器表达式省内存,列表解析式返回新的列表
      • 生成器没有数据,内存占用极少,但是使用的时候,虽然一个个返回数据,但是合起来占用的内存也差不多
      • 列表解析式构造新的列表需要占用内存
    • 计算速度

      • 单看计算时间,生成器表达式耗时非常短,列表解析式耗时长
      • 但是生成器本身并没有返回任何值,只返回了一个生成器对象
      • 列表解析式构造并返回了一个新的列表
    • 生成器

      • 可迭代对象
      • 迭代器

生成器和迭代器是不同的对象,但是都是可迭代对象!!!

集合解析式类似列表解析式,使用花括号{}即可

字典解析式

  • {返回值 for 元素 in 可迭代对象 if 条件}
  • 列表解析式的中括号换成大括号{}即可
  • 使用key.value形式
  • 立即返回一个字典

相关文章

  • Python 各种推导式

    python 列表推导式 执行结果 生成器表达式 1 把列表解析的[]换成()得到的就是生成器表达式 2 列表解析...

  • 9.解析式与生成器

    目录1.列表解析2.生成器表达式3.集合解析式4.字典解析式 1. 列表解析介绍 1.1 列表解析介绍 语法: ...

  • python 生成器详述

    参考python核心变成第二版 列表解析 在介绍生成器表达式之前,先来介绍一下列表解析 列表解析(List com...

  • python的列表生成式和lambda

    [TOC] 列表生成式 列表生成式 生成器 lambda表达式

  • Python编程学习笔记1.1

    《Python编程》学习笔记1.1 本篇承接上文,介绍列表解析、生成器表达式和map的使用,这些都是python中...

  • python 基础 05 生成器,列表推导式,次要的内置函数

    python 基础 05 1.生成器 2.列表推导式 3.生成器表达式 4.字典推导式与集合推导式 5.次要的内置函数

  • 迭代器&生成器

    列表推导式: 列表生成式: 相当于: 以上就是用for语句的迭代器。 生成器表达式: 生成器函数: 调用: 生成器...

  • python笔记(

    常用 提高python编码效率 赋值 列表推导式 列表解析表达式,类似[i*2 for i in list] 三元...

  • 2 python基础

    列表解析:[表达式 for …in… 条件]用于数据量较少 生成器表达式:(表达式 for …in… 条件 )用于...

  • Python 生成器和迭代器

    生成器和迭代器 生成器 Python 列表推导和生成器表达式 在上文中简单介绍了生成器的作用。在列表推导创建列表时...

网友评论

      本文标题:Python 列表解析式 - 生成器表达式

      本文链接:https://www.haomeiwen.com/subject/mryzbftx.html