Pyhton入門 筆記 第五天 Pythonic與Python雜記

一,Python  字典映射,代替  switch函數

Python中,沒有switch,在別的語言中爲spa

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

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

1)當day的值存在字典的key中時blog

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

day_name=swticher[day]
print(day_name)

2)當day的值不存在字典switcher中,並且要有默認真時。get

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

day_name=swticher.get(day,unknown)  #使用get()方法,當值超出時可獲得默認值unknown
print(day_name)

3)當字典中的值爲代碼塊的時候it

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)

 二推導式class

1)map

#列表推導式
#集合推導式
#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)字典的推導filter

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)
相關文章
相關標籤/搜索