浅谈Python中列表生成式和生成器的区别

作者:Yi_Zhi_Yu 时间:2023-03-21 11:50:39 

列表生成式语法:


[x*x for x in range(0,10)] //列表生成式,这里是中括号
//结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(x*x for x in range(0,10)) //生成器, 这里是小括号
//结果 <generator object <genexpr> at 0x7f0b072e6140>

二者的区别很明显:
一个直接返回了表达式的结果列表, 而另一个是一个对象,该对象包含了对表达式结果的计算引用, 通过循环可以直接输出


g = (x*x for x in range(0,10))
for n in g:
 print n

结果


0
1
4
9
16
25
36
49
64
81

    当表达式的结果数量较少的时候, 使用列表生成式还好, 一旦数量级过大, 那么列表生成式就会占用很大的内存,
    而生成器并不是立即把结果写入内存, 而是保存的一种计算方式, 通过不断的获取, 可以获取到相应的位置的值,所以占用的内存仅仅是对计算对象的保存

标签:Python,列表生成式,生成器
0
投稿

猜你喜欢

  • Go语言并发编程之互斥锁Mutex和读写锁RWMutex

    2024-04-25 15:00:32
  • 通过代码实例了解Python异常本质

    2023-06-14 06:29:19
  • python读写json文件的简单实现

    2023-06-27 07:40:15
  • 多次执行mysql_fetch_array()的指针归位问题探讨

    2024-01-16 00:16:16
  • Django 项目布局方法(值得推荐)

    2022-08-22 12:44:22
  • 获取一个数字的个位、十位、百位的函数代码

    2011-02-20 11:06:00
  • CSS中写expression可能会在Chrome中有问题

    2010-01-29 13:10:00
  • MySQL授权命令grant的使用方法小结

    2024-01-22 14:09:22
  • pytorch 如何实现HWC转CHW

    2023-06-05 21:58:23
  • Python贪心算法实例小结

    2021-08-05 21:10:17
  • matplotlib部件之矩形选区(RectangleSelector)的实现

    2023-02-27 04:07:59
  • 浅谈python3打包与拆包在函数的应用详解

    2022-03-05 00:33:15
  • python调用系统中应用程序的函数示例

    2021-01-18 11:06:32
  • Python Socket实现远程木马弹窗详解

    2022-11-28 10:04:39
  • python求斐波那契数列示例分享

    2022-07-20 19:32:10
  • vue2项目使用sass的示例代码

    2024-04-26 17:39:16
  • 超详细,教你用python语言实现QQ机器人制作教程

    2023-10-05 10:12:53
  • Dreamwaver 常见问答解答

    2009-07-05 18:51:00
  • 完美解决mysql启动后随即关闭的问题(ibdata1文件损坏导致)

    2024-01-12 14:43:03
  • vue实现动态路由详细

    2024-05-05 09:25:19
  • asp之家 网络编程 m.aspxhome.com