#python的推导式
- 列表推导式
首先看下面的代码
multiples = []
for i in range(30):
if i%3 is 0:
multiples.append(i)
print (multiples)
#运行结果
#[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
这段代码从0 - 29这个序列中,生成一个3的倍数的列表。如果用推导式写这段代码:
multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
#运行结果
#[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
- 字典推导式
先看普通代码:
mcase = {'a':10, 'b':34, 'A':7,'z':3}
mcase_frequency = {}
for k in mcase.keys():
if k.lower() in ['a', 'b']:
return_value = mcase.get(k.lower(),0) + mcase.get(k.upper(),0)
mcase_frequency[k.lower()] = return_value
print (mcase_frequency)
这段代码,遍历一个字典对象,将相同字母(不区分大小写)的value相加,再写到一个新的字典中。换成字典推导式的写法:
mcase = {'a':10, 'b':34, 'A':7,'z':3}
mcase_frequency = {
k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
for k in mcase.keys()
if k.lower() in ['a','b']
}
print (mcase_frequency)