Python零基础入门学习27:高级特性之推导式

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

本文阅读时间约为3分钟

什么是推导式

推导式是一个或者多个迭代器,快速简洁地创建数据结构的一种方法。

推导式将循环和条件判断结合,从而避免语法冗长的代码。

推导式可以生成列表、字典和集合。

列表、字典、集合推导式的语法

列表推导式的语法为:

[<表达式> for <变量> in <可迭代对象> if <逻辑条件>]

字典推导式的语法为:

{<键表达式>: <值表达式> for <变量> in <可迭代对象> if <逻辑条件>}

集合推导式的语法为:

{<元素表达式> for <变量> in <可迭代对象> if <逻辑条件>}
推导式的一些实例

下面是关于列表推导式、字典推导式、集合推导式的一些实例。

# 列表推导式的实例。
[x ** 2 for x in range(10)]
Out[8]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 字典推导式的实例。
{f"K{x}": x ** 3 for x in range(10)}
Out[3]: 
{'K0': 0,
 'K1': 1,
 'K2': 8,
 'K3': 27,
 'K4': 64,
 'K5': 125,
 'K6': 216,
 'K7': 343,
 'K8': 512,
 'K9': 729}

#集合推导式的实例。
{x+y for x in range(10) for y in range(x)}  # 嵌套循环推导式。
Out[4]: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}

#上述实例推导式的实例等价于:
S = set() 
for x in range(10):
    for y in range(x):
        S.add(x+y)
print(S)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}
生成器推导式

与推导式一样语法,但使用圆括号的:

(<表达式> for <变量> in <可迭代对象> if <逻辑条件>)

返回一个生成器对象,也是可迭代对象。生成器对象并不立即产生全部元素,仅在要使用到元素的时候才生成,这样可以极大节省内存。

(x for x in range(5))
Out[9]: <generator object <genexpr> at 0x000001FD6D196948>  # 生成器。
推导式的优势

拿列表推导式为例,如果我们有一个列表,并希望抽取列表中的元素,那么最标准的方法是使用循环,也可以通过列表推导式。两者其实是一样的,都是由创建、遍历和接收三部分组成。

推导式有两大优势:

第一,精简代码。相比循环,代码量由多行降低到一行,整个代码更简洁优雅。

第二,提升性能。这是非常重要的一点。推导式的速度相比循环快很多。

当然,推导式的可读性相对差一点。不过,相信你在熟练掌握循环的情况下,会很快习惯并喜欢上推导式的优雅的。

To be continued.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容