Pyhton入门 笔记 第五天 Pythonic与Python杂记

一,Python  字典映射,代替  switch

Python中,没有switch,在别的语言中为

switch(day)
{
    case 0:
    dayName="Sunday";
    break;
    case 1:
    dayName="Monday";
    break;
    case 2:
    dayName="Tuesday";
    break;
    .......
    default :
    dayName="Unknown"
}

上例,在Python中,用字典映射

1)当day的值存在字典的key中时

day=2
switcher={
    0:'Sunday',
    1:'Monday',
    2:'Tuesday',
}

day_name=swticher[day]
print(day_name)

2)当day的值不存在字典switcher中,而且要有默认真时。

day=6
switcher={
    0:'Sunday',
    1:'Monday',
    2:'Tuesday',
}

day_name=swticher.get(day,unknown)  #使用get()方法,当值超出时可得到默认值unknown
print(day_name)

3)当字典中的值为代码块的时候

day=5
def get_sunday():
    return 'Sunday'
def get_monday():
    return 'Monday'
def get_tuesday():
    return 'Tuesday'
def get_default():
    return 'Unknown'
switcher={
    0:get_sunday,
    1:get_monday,
    2:get_tuesday
}

day_name=switcher.get(day,get_default)()  #直接返回函数
print(day_name)

 二推导式

1)

#列表推导式
#集合推导式
#map filter
#set 也可以被推导
#dict,也可以被推导
a=[1,2,3,4,5,6,7,8,9] #要求,计算a中各项的平方
b=[i*i for i in a]   #i*i也可以写为i**2,所以,i的3次方,也可以写为i**3
print(b)

2)

#列表推导式
#集合推导式
#map filter
#set 也可以被推导
#dict,也可以被推导
a=[1,2,3,4,5,6,7,8,9] #要求,计算a大于等于中各项的平方
b=[i*i for i in a if i>=5]   #注,推导不至可以用[],也可以用{},如果b={i*i for i in a if i>=5} 但得到的类型就不同了。

print(b)

 3)字典的推导

students={
    '小晨':15,
    '浸染':45,
    '当当':12
}
b=[key for key,value in students.items()]  #因为字典是key,和value两个值,所以也要两个参数(必须的) 同时要使用函数items()
print(b)

 4)字典的推导,让字典的key与value相反输出

students={
    '小晨':15,
    '浸染':45,
    '当当':12
}
b={value:key for key,value in students.items()}
print(b)
原文地址:https://www.cnblogs.com/tngh/p/9325451.html