概述
最近看了一篇文章一行python代码,刚一开始看,惊呆了,python竟然可以这样写,大牛绝逼是大牛。事后仔细了解了一下代码和作者,作者的确是大牛,但发现一行python代码并不是多么神秘,反而很简单,就是python的推导式。
我先写一个简单地列表推导式:
[x for x in range(5)]
结果:
[0,1,2,3,4]
还可以用表达式代替x的位置:
[x*x for x in range(5)]
结果:
[0,1,4,9,16]
函数也可以:
a=lambda x:x*x
[a(x) for x in range(5)]
结果:
[0,1,4,9,16]
通过上面的例子,我们可以发现列表的推导式就是起到了for循环的作用。其实推导式还可以有更大的作用,就是可以用if语句做判断,请看线面的例子:
[x for x in range(5) if x!=3]
结果:
[0,1,2,4]
像上面的例子中if语句是在for语句之后的,其实还可以放在for之前,但是,if语句必须要有else分支,也就是说放在外面是先判断再进行运算,即最后的列表长度不一定是5,如果放在前面,最后列表的长度必须是5.
[x if x!=3 else 0 for x in range(5)]
结果:
[0,1,2,0,4]
经过简单介绍,我们发现利用python的推导式可以完全替代for循环的简单功能。除此之外,我们平时还会用到for循环的嵌套,利用列表的推导式也能实现这一功能。
['%d %d'%(x,y) for x in range(2) for y in range(2)]
结果:
['0 0','0 1','1 0','1 1']
上面的例子虽然也实现了for语句的嵌套功能,但是,你仔细看输出会发现x在外部,y在内部,用的时候要注意。如果想写的符合我们一般的逻辑,即后面的循环在外部,前面的循环在内部,可以这样写:
[['%d %d'%(x,y) for x in range(2)] for y in range(2)]
结果:
[['0 0','1 0'],['0 1','1 1']]
以上就是python中列表推导式的应用和我自己使用的经验,除此之外,推导式还可以在字典和集合中使用,详情见Python中的推导式使用详解
最后
以上就是还单身缘分为你收集整理的python的推导式编程的全部内容,希望文章能够帮你解决python的推导式编程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复