三元條件判斷的3種實現(xiàn)方法
C語言中有三元條件表達式,如a>b?a:b,Python中沒有三目運算符(?:),但Python有它自己的方式來實現(xiàn)類似的功能。這里介紹3種方法:
true_partifconditionelsefalse_part
a,b=2,3
c=aifa>belseb
a,b=2,1
c=aifa>belseb
>>>printc
利用and-or條件判斷的特性來實現(xiàn)三元條件判斷
首先介紹一下,and和or的用法:
python中的and從左到右計算表達式,若所有值均為真,則返回最后一個值,若存在假,返回第一個假值。
無論是列表,元組還是字符串,空表示False,非空表示True
>>>'python'and[]and(2,3)
[]
>>>'python'and[2,3]and(3,4)
(3,4)
or也是從左到右計算表達式,存在真,則返回第一個為真的值,若均為假,則返回最后一個值。
>>>'python'or[3,4]or()
'python'
>>>''or[]or()
()
然后,我們利用and-or條件判斷的特性來實現(xiàn)三元條件判斷:
a,b=2,1
c=(a>band[a]or[b])[0]
>>>printc
使用列表
a,b=2,7
c=[b,a][a>b]
>>>printc
分析:若a>b為真,由于真用1表示,因此相當(dāng)于c=[b,a][1],即c=a
若a>b為假,由于假用0表示,因此相當(dāng)于c=[b,a][0],即c=b
>>>int(False)
0
>>>int(True)
字典(dict)
以下問題都是在用Python寫KNN的時候遇到的:
dict_items()
python字典(dict)的特點就是無序的,按照鍵(key)來提取相應(yīng)值(value),如果我們需要字典按值排序的話,那可以用下面的方法來進行:
1下面的是按照value的值從大到小的順序來排序。
輸出的結(jié)果:
[(‘a(chǎn)a’,74),(‘a(chǎn)’,31),(‘bc’,5),(‘a(chǎn)sd’,4),(‘c’,3),(‘d’,0)]
下面我們分解下代碼:
printdic.items()得到[(鍵,值)]的列表。
然后用sorted方法,通過key這個參數(shù),指定排序是按照value,也就是元素d[1]的值來排序。reverse=True表示是需要翻轉(zhuǎn)的,默認(rèn)是從小到大,翻轉(zhuǎn)的話,那就是從大到小。
2對字典按鍵(key)排序:
dic={‘a(chǎn)’:31,‘bc’:5,‘c’:3,‘a(chǎn)sd’:4,‘a(chǎn)a’:74,‘d’:0}
dict=sorted(dic.items(),key=lambdad:d[0])
print(dict)
dict_get()
dic={‘a(chǎn)’:31,‘bc’:5,‘c’:3,‘a(chǎn)sd’:4,‘a(chǎn)a’:74,‘d’:0}
dic.get(‘a(chǎn)’,1)
31
dic.get(‘d’,1)
0
dic.get(‘f’,1)
1
D.get(k[,d])->D[k]ifkinD,elsed.ddefaultstoNone.
如果k在字典中,返回D[k],即value值,否則返回d,d默認(rèn)為None
Image和Ndarray互相轉(zhuǎn)換
importnumpyasnp
fromPILimportImage
img=Image.open(filepath)
img_convert_ndarray=np.array(img)
ndarray_convert_img=Image.fromarray(img_convert_ndarray)
#np.array(object)這個函數(shù)很強大啊,看源碼里面給的注釋
#object:array_like
#Anarray,anyobjectexposingthearrayinterface,anobjectwhose
#__array__methodreturnsanarray,orany(nested)sequence.
以上內(nèi)容為大家介紹了Python里面的一些小技巧,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。http://m.2667701.com/