判断一个程序员程度的高下,不能光看他的发量,也不能光看他的代码量,还要看他代码蕴含的思维,代码的品质。代码蕴含的思维次要体现在各种设计模式的使用上,而代码的品质就既要实现需求,又要保障代码的简洁优雅。保障代码品质是须要长期积攒,养成良好的编程习惯,一直思考优化的。
明天就给大家介绍一种实用的保障代码简洁的文治—— Python 推导四式。
什么是推导式
推导式 comprehensions(又称解析式),是 python 的一种独有个性。推导式是能够从一个数据序列构建另一个新的数据序列。
看定义很形象,上面咱们来看看具体的例子,通过例子来学习这四种推导式。
列表推导式
咱们先来看一个需要:
疾速创立一个蕴含元素 1 - 9 的平方的列表
面对这个需要,咱们通常的实现形式是这样的:
lis = []
for i in range(1, 10):
lis.append(i*i)
print(lis) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
用列表推导式怎么实现呢?你只须要一行代码:
lis = [x * x for x in range(1, 10)]
print(list) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
这就是推导式。咱们能够看到列推导式的语法是这样的:
变量名 = [表达式 for 变量 in 列表]
再来一个简单点的:
list = [x * y for x in range(1, 10) for y in range(1, 10)]
print(lis)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]
这个是多个变量的类型,因而咱们能够扩大下面的语法:
变量名 = [表达式 for 变量 in 列表 for 变量 in xxx]
当然,还有一种带条件的列推导式,它的语法是这样的:
变量名 = [表达式 for 变量 in 列表 if 条件]
咱们来看一个需要:疾速创立一个蕴含 1 -10 之间所有偶数的列表。
lis = [i for i in range(1, 11) if i % 2 == 0]
print(lis) # [2, 4, 6, 8, 10]
字典推导式
字典推导式的模式和列表推导式相似,语法也是相似的,只不过字典推导式返回的后果是字典。
变量名 = {key: value 表达式}
咱们来看一个例子:
dic = {x: x/2 for x in range(1,11) if x % 2 == 0}
print(dic) # {2: 1.0, 4: 2.0, 6: 3.0, 8: 4.0, 10: 5.0}
如果这里我写成上面这种形式,返回的后果是什么呢?
dic = {'half': x/2 for x in range(1,11) if x % 2 == 0}
print(dic)
大家能够本人尝试运行一下,看跟你想的后果是不是一样的。
汇合推导式
看了后面两个推导式,想必你曾经晓得汇合推导式怎么写了。语法如下:
变量名 = {表达式 for 变量 in 列表 for 变量 in xxx}
或者
变量名 = {表达式 for 变量 in 列表 if 条件}
来一个理论的例子:创立一个存储 10 个偶数的汇合。
set1 = {x for x in range(10) if x % 2 == 0}
print(set1) # {0, 2, 4, 6, 8}
元组推导式
咱们先来看一个例子:
tup=(x for x in range(1,10))
print(tup) # <generator object <genexpr> at 0x1101fade0>
看到这个后果打印是不是有点懵?
下面的代码返回的变量其实是一个生成器,并不是一个元组。其实没有真正的元组推导式,咱们只能用一个相似的办法来生成元组,暂且叫做“伪元组推导式”吧。
下面的例子咱们来改良一下:
tup=tuple(x for x in range(1,10))
print(tup) # (1, 2, 3, 4, 5, 6, 7, 8, 9)
在后面加上 tuple 来显式进行类型转换就行了。
总结
这里介绍了四种 python 的推导式,次要是用来简化 循环的代码,生成不同的数据结构用的。当然,从这些根底的表达式语法登程,还能够使用到简单的推导式,大家在写代码时留心应用就会发现它的弱小之处。这种一行代码既简洁明了,又能够在老手背后炫技,用起来不要太爽!
以上就是本次分享的所有内容,想要理解更多 python 常识欢送返回公众号:Python 编程学习圈,每日干货分享