Python 裡面的一些小技巧(持續更新)

2021-08-05 23:04:45 字數 2446 閱讀 3380

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)

31 dic.get(『d』,1)

0 dic.get(『f』,1)

1

d.get(k[,d]) -> d[k] if k in d, else d. d defaults to none.

如果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的資料來源 繫結 ...