推导式是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执行结果

是不是很简洁呢,大家可以看看不用推导式怎么实现这个需求。
字典推导式:
字典推导式其实跟序列很类似,可以看做是对字典的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执行结果

大小写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执行结果

集合推导式
集合推导式和序列推导式是一样的,只是序列用的是“[]”,而集合用的是“{}”
需求:将已知序列的元素,平方后生成新的集合
代码
def set_compre():
list_test=[1,2,3,4]
a={i*i for i in list_test}
print a执行结果

——————————————————
BY:HW-CM







































苏公安网备 32011402010933号