前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推导Comprehensions

推导Comprehensions

作者头像
Helloted
发布2022-06-07 13:42:21
1460
发布2022-06-07 13:42:21
举报
文章被收录于专栏:Helloted

推导Comprehensions是Python的一个特性。 Comprehensions是允许从其他序列构建序列的构建体。 Python 2和Python 3都支持三种类型的推导:

  • list comprehensions
  • dictionary comprehensions
  • set comprehensions
list comprehensions

list comprehensions提供了一个简短的方式来创建list。 它由方括号组成,其中包含一个表达式,后跟一个for子句,然后是零个或多个or if子句。 表达式可以是任何东西,这意味着你可以往列表中放入各种对象。 结果将是在if和for子句的语境评估之后创建的新列表。

样板:

代码语言:javascript
复制
variable = [out_exp for out_exp in input_list if out_exp == 2]

下面是一个简短的例子:

代码语言:javascript
复制
multiples = [i for i in range(30) if i % 3 == 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

这对于快速创建list非常有用。 它甚至是一些替代filter功能的首选。 列表推导真正的亮点,当你想提供一个方法或函数的列表,通过在for循环的每个迭代中附加一项来创建一个新的列表。 例如,你通常会做这样的事情:

代码语言:javascript
复制
squared = []
for x in range(10):
    squared.append(x**2)

用推导就很简单了:

代码语言:javascript
复制
squared = [x**2 for x in range(10)]
dictionary comprehensions
代码语言:javascript
复制
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}

mcase_frequency = {
    k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
    for k in mcase.keys()
}

# mcase_frequency == {'a': 17, 'z': 3, 'b': 34}

在上面的例子中,我们把key相同但是类型不同的联合到一起,可以有更快的方式

代码语言:javascript
复制
{v: k for k, v in some_dict.items()}
set comprehensions
代码语言:javascript
复制
squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: {1, 4}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • list comprehensions
  • dictionary comprehensions
  • set comprehensions
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档