文档开发者中心
我的

关于python 推导式的那些事儿

推导式是python中的一个特色,它提供了非常简洁的python书写方法。不过个人还是建议,对于普通的可以用推导式,对于过于复杂的逻辑,用推导式,可能阅读代码比较费劲。


python推导式有三种:列表推导式、字典推导式、集合推导式。

列表推导式


列表推导式的基本格式为:


variable = [out_exp_res for out_exp in input_list if out_exp == 2]

 out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
 
 for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。
 
 if out_exp == 2:  根据条件过滤哪些值可以。


举例:


取30以内的偶数的平方


def list_compre():

   result=[i*i for i in range(30) if i%2==0 ]
   print result


执行结果


11.png


是不是很简洁呢,大家可以看看不用推导式怎么实现这个需求。

字典推导式:

字典推导式其实跟序列很类似,可以看做是对字典的key和value两个序列进行的操作。


两个经典的例子:1、调换key和value 2、合并key值


调换key和value


代码:


def dic_compre():
   dic_test={'a':1,'b':2,'c':3}
   new_dic={v:k for k,v in dic_test.items()}
   print new_dic


执行结果


12.png


大小写key合并


代码


def dic_compre():
   dic_test={'a':1,'b':2,'A':3,'B':9}
   new_dict={k:dic_test.get(k,0)+dic_test.get(k.upper(),0)
             for k in dic_test.keys() if k in['a','b']}
   print new_dict


执行结果


13.png

集合推导式

集合推导式和序列推导式是一样的,只是序列用的是“[]”,而集合用的是“{}”


需求:将已知序列的元素,平方后生成新的集合


代码


def set_compre():
   list_test=[1,2,3,4]
   a={i*i for i in list_test}
   print a


执行结果


14.png


——————————————————


BY:HW-CM

点赞
收藏
回复
4
分享
举报
浏览1581 发布于2019-10-14 07:05未知归属地
全部评论
最多点赞
最新发布
最早发布

我也觉得这个不错

3楼回复于2019-10-14 09:59 未知归属地

文章还是图文并茂的

2楼回复于2019-10-14 07:10 未知归属地

顶顶顶顶,一起学习啊

1楼回复于2019-10-14 07:06 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

目录 收起
列表推导式
字典推导式:
集合推导式
了解社区公约,与您携手共创和谐专业的开发者社区。