c語言中有三元條件表示式,如 a>b?a:b,python中沒有三目運算子(?:),但python有它自己的方式來實現類似的功能。這裡介紹3種方法:
a,b=2,3
c=a if a>b else b
a,b=2,1
c=a if a>b else b
>>>
print c
2
首先介紹一下,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條件判斷的特性來實現三元條件判斷:
a,b=2,1
c = (a>b and [a] or [b])[0]
>>>
print c
2
a,b=2,7
c = [b,a][a>b]
>>>
print c
7
分析:若a>b為真,由於真用1表示,因此相當於c=[b,a][1],即c=a
若a>b為假,由於假用0表示,因此相當於c=[b,a][0],即c=b
>>> int(false)
0>>> int(true)
1
以下問題都是在用python寫knn的時候遇到的:
python 字典(dict)的特點就是無序的,按照鍵(key)來提取相應值(value),如果我們需要字典按值排序的話,那可以用下面的方法來進行:
1 下面的是按照value的值從大到小的順序來排序。
dic =
dict= sorted(dic.items(), key=lambda d:d[1], reverse = true)
print(dict)
輸出的結果:
[(『aa』, 74), (『a』, 31), (『bc』, 5), (『asd』, 4), (『c』, 3), (『d』, 0)]
下面我們分解下**:
print dic.items() 得到[(鍵,值)]的列表。
然後用sorted方法,通過key這個引數,指定排序是按照value,也就是元素d[1]的值來排序。reverse = true表示是需要翻轉的,預設是從小到大,翻轉的話,那就是從大到小。
2 對字典按鍵(key)排序:
dic =
dict= sorted(dic.items(), key=lambda d:d[0])
print(dict)
dic =
dic.get(『a』,1)d.get(k[,d]) -> d[k] if k in d, else d. d defaults to none.31 dic.get(『d』,1)
0 dic.get(『f』,1)
1
如果k在字典中,返回d[k],即value值,否則返回d,d預設為none
import numpy as np
from pil import image
img = image.open(filepath)
img_convert_ndarray = np.array(img)
ndarray_convert_img= image.fromarray(img_convert_ndarray )
# np.array(object) 這個函式很強大啊,看原始碼裡面給的注釋
# object : array_like
# an array, any object exposing the array
inte***ce, an object whose
# __array__ method
returns
anarray, or
any(nested)
sequence.
參考自:image和ndarray互相轉換 Python 一些小技巧
insert index,value 方法是在列表中間增加元素,同樣的,如果傳入的是乙個列表或元組,則也會被巢狀插入。序列封包 sequence packing 和序列解包 sequence unpacking vals 10,20,30 print vals 10,20,30 a b,c vals...
一些小技巧
關注 乙個好的程式設計師不應該把所有的判斷交給編譯器和偵錯程式,應該在程式中自己加以程式保護和錯誤定位,具體措施包括 對於所有有返回值的函式,都應該檢查返回值,除非你確信這個函式呼叫絕對不會出錯,或者不關心它是否出錯。一些函式返回錯誤,需要用其他函式獲得錯誤的具體資訊。例如accept返回inval...
一些小技巧
protected void repparent itemdatabound object sender,system.web.ui.webcontrols.repeateritemeventargs e 在父datalist的itemdatabound事件裡面寫子datalist的資料來源 繫結 ...