返回介绍

Python 3.0 解析语法概括

发布于 2024-01-29 22:24:16 字数 1063 浏览 0 评论 0 收藏 0

我们已经在本章中关注过列表解析和生成器,但是,别忘了,还有两种在Python 3.0中可用的解析表达式形式:集合解析和字典解析。我们在第5章和第8章曾遇到过这两种形式,但是,有了解析和生成器的知识,现在我们应该能够全面地理解这些Python 3.0扩展了。

·对于集合,新的常量形式{1,3,2}等同于set([1,3,2]),并且新的集合解析语法{f(x)for x in S if P(x)}就像是生成器表达式set(f(x)for x in S if P(x)),其中f(x)是一个任意的表达式。

·对于字典,新的字典解析语法{key:val for(key,val)in zip(keys,vals)}像dict(zip(keys,vals))形式一样工作,并且{x:f(x)for x in items}像生成器表达式dict((x,f(x))for x in items)一样工作。

这里是Python 3.0中的所有解析替代方式的总结。最后两种是新的,并且在Python 2.6中不可用。

解析集合和字典解析

从某种意义上讲,集合解析和字典解析只是把生成器表达式传递给类型名的语法糖。因此,二者都接受任何的可迭代对象,一个生成器在这里工作得很好。

然而,对于列表解析来说,我们总是可以用手动代码来构建结果对象。这里是最后两个解析的基于语句的等价形式。

注意,尽管这两种形式都接受迭代器,它们没有根据需要产生结果的概念——两种形式都是一次构建所有对象。如果你想要根据需求产生键和值,生成器表达式更合适。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文