资讯专栏INFORMATION COLUMN

Python 列表生成式和生成器

lpjustdoit / 2915人阅读

摘要:列表生成式语法列表生成式这里是中括号结果生成器这里是小括号结果二者的区别很明显一个直接返回了表达式的结果列表,而另一个是一个对象,该对象包含了对表达式结果的计算引用,通过循环可以直接输出结果当表达式的结果数量较少的时候,使用列表生成式还好,

列表生成式语法:

[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)) //生成器, 这里是小括号
//结果  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
  

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37563.html

相关文章

  • Python的高级特性,模块和IO操作

    摘要:所以如果像上述这样引入模块的时候,调用函数必须加上模块名通常情况下鼓励每个语句只导入一个包方便理解和阅读代码。 今天我们学习Python的高级特性、模块和IO操作,通过学习这些,我们可以更快的了解Python,使用Python。 高级特性中会讲述列表生成式、生成器、和一些高级函数,学习这些方便我们快速的生成列表,节省我们使用Python的时间,更快的使用Python达成我们的目的。 模...

    WelliJhon 评论0 收藏0
  • python开发第五篇--装饰器和内置函数

    摘要:装饰器的应用场景比如插入日志,性能测试,事务处理,缓存等等场景。装饰器完美的遵循了这个开放封闭原则。迭代器迭代器遵循迭代器协议必须拥有方法和方法。直到函数执行结束。调用相关函数用于检查一个对象是否是可调用的。 装饰器 装饰器的含义: 1.装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。2.装饰器的应用...

    Integ 评论0 收藏0
  • Python 编码风格参考

    摘要:本文仅是一个编码风格的参考,并不是一个规定,规定必须要这么去做。变量类属性等命令尽量不要使用缩写形式,除了计数器和迭代器,尽量不要使用单字符名称。 代码除了用来运行外,更多的是用来读。为了是代码的可读性更强,很多编程语言都有自己的编码规范。规范的制定是为了保持代码的一致性,以使代码更美观和易读。代码应该怎么样排版和编写并不是绝对的,所以一些地方会有争议。有时风格指南并不适用,最重要的知...

    MartinHan 评论0 收藏0
  • 工具集核心教程 | 第一篇: .md即markdown文件的基本常用编写语法(图文并茂)

    摘要:欢迎关注我的微信公众号获取更多更全的学习资源,视频资料,技术干货公众号回复学习,拉你进程序员技术讨论群,干货资源第一时间分享。公众号回复全栈,领取前端,,产品经理,微信小程序,等资源合集大放送。公众号回复面试,领取面试实战学习资源。 序言: 感觉只要是不写博客,人就很变得很懒,学的知识点感觉还是记不住,渐渐地让我明白,看的越多,懂的越少(你这话不是有毛病吗?应该是看的越多,懂的越多才...

    lucas 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<