返回介绍

8.2 列表解析

发布于 2024-01-23 21:41:46 字数 933 浏览 0 评论 0 收藏 0

列表解析(list comprehension,简称listcomp)让你可以通过声明在单行内构造列表的内容。

没有列表解析的情况

>>> x = []
>>> for i in (1, 2, 3):
...   x.append(i)
...
>>> x
[1, 2, 3]

使用列表解析的实现

>>> x = [i for i in (1, 2, 3)]
>>> x
[1, 2, 3]

可以同时使用多条for语句并使用if语句过滤元素:

x = [word.capitalize()
   for line in ("hello world?", "world!", "or not")
   for word in line.split()
   if not word.startswith("or")]
>>> x
['Hello', 'World?', 'World!', 'Not']

使用列表解析而不使用循环是快速定义列表的简洁方式。因为我们仍然在讨论函数式编程,值得一提的是通过列表解析构建的列表是不能依赖于程序的状态的1。这通常让它们比非列表解析构建的列表更加简洁易读。

注意

也有一些语法用于以同样的方式构建字典和集合:

> {x:x.upper() for x in ['hello', 'world']} {'world': 'WORLD', 'hello': 'HELLO'} > {x.upper() for x in ['hello', 'world']} set(['WORLD', 'HELLO'])

注意,这只在Python 2.7及后续版本中有效。

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

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

发布评论

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