加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 21:44:25 所属栏目:Python 来源:网络整理
导读:列表生成式语法: [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 二者的区别很明显: 一个直接返回了表达

列表生成式语法:

[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

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


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读