浅谈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