python中的一些函式

2021-08-11 06:12:51 字數 3685 閱讀 2771

最近一直在看opencv中白平衡的**,遇到了一些python的函式,自己不熟悉,下面就這些零碎的知識點進行整理。

strip:v 剝光、剝去、**服

python中strip() 方法用於移除字串頭尾指定的字元(預設為空格)

str.strip([chars])

例子:

>>> str = "00000000this is string example...wow!!!0000000000"
>>> print(str.strip('0'))
this is string example...wow!!!

例2:

>>> str = "00000000this is string 0000example...wow!!!0000000000"
>>> print(str.strip('0'))
this is string 0000example...wow!!!
注意:只去掉了字串頭尾指定的字元,字串中的相應的字元不會去掉。

二  python中的函式sort和sorted

對list進行排序,python提供了兩個方法

方法1:用list的內建函式list.sort進行排序

list.sort(func=none, key=none, reverse=false)

例:

>>> list = [2,8,19,0,7,12]

>>> list.sort()
>>> list
[0,2,7,12,19]
方法2: 用序列型別函式sorted(list)進行排序

>>> list = [2,8,19,0,7,12]
>>> sorted(list)
[0,2,7,12,19]
兩種方法的區別:

sorted(list) 返回乙個物件,可以作用表示式。原來的list不變,生成乙個新的排好序的list物件。

list.sort() 不會返回物件,改變原有的list。

其他sort的例項:

例項1:正向排序

>>> l = [2, 3, 1, 4, 5]
>>> l.sort()
>>> l
[1,2,3,4,5]
例項2:反向排序

>>> l = [2, 3, 1 , 4, 5]>>> l.sort(reverse=true)
>>> l
[5,4,3,2,1]
例項3: 對第二個關鍵字排序

>>> l = [('b',6), ('a',1), ('c',3), ('d',4)]
>>> l.sort(lambda x,y:cmp(x[1],y[1]))
>>> l
[('a',1),('c',3),('d',4),('b',6)]
例項4:對第二個關鍵字排序

>>> l = [('b',6), ('a',1), ('c',3), ('d',4)]
>>> l.sort(key=lambda x:x[1])
>>> l
[('a',1),('c',3),('d',4),('b',6)]
例項5:對第二個關鍵字排序

>>> l = [('b',2), ('a',1), ('c',3), ('d',4)]
>>> import operator
>>> l.sort(key=operator.itemgetter(1))
>>> l
[('a',1),('b',2),('c',2),('d',4)]
例項6:(dsu方法:decorate-sort-undecorate)

>>> l = [('b',2), ('a',1), ('c',3), ('d',4)]
>>> a = [(x[1],i,x) for i,x in enumerate(l)]  #i can confirm the stable sort
>>> a.sort()
>>> a
[(1,1,('a',1)),(2,0,('b',2)), (3,2,('c',3)),(4,3,('d',4))]
>>> l = [s[2] for s in a]
>>> l
[('a',1),('b',2),('c',2),('d',4)]
以上給出了6種對list排序的方法,其中例項3,4,5,6能起到對以list item中某一項為比較關鍵字進行排序。

效率比較:

cmp < dsu通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當

三、多關鍵字比較排序

例項7:

>>> l = [('d',2),('a',4),('b',3),('c',2)]

>>> l.sort(key=lambda x:x[1])

>>> l

[('d',2),('c',2),('b',3),('a',4)]
我們看到,此時排序過的l僅僅是按照第二個關鍵字來排的。

如果我們想用第二個關鍵字排序過後再用第乙個關鍵字進行排序呢?有兩種方法

例項8:

>>> l = [('d',2),('a',4),('b',3),('c',2)]

>>> l.sort(key=lambda x:(x[1],x[0]))

>>> l

[('c',2),('d',2),('b',3),('a',4)]
例項9:

>>> l = [('d',2),('a',4),('b',3),('c',2)]

>>> l.sort(key=operator.itemgetter(1,0))

>>> l

[('c',2),('d',2),('b',3),('a',4)]

為什麼例項8能夠工作呢?原因在於tuple的比較是從左到右比較的,如果相等,比較第二個

一些python函式

做文字處理的時候經常要判斷乙個文字有沒有以乙個子串開始,或者結束。python為此提供了兩個函式 s.startswith prefix start end bool 如果字串s以prefix開始,返回true,否則返回false。start和end是兩個可以預設的引數。分別是開始比較的位置和結束比...

python中的一些型別轉換函式

函式 描述 int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 eval str 用來計算在字串...

python的一些內建函式

python並非我的第一語言,所以之前看python 的時候遇到過一些內建函式的時候,總是以物件導向不看細節的心情大概理解用法之後就置之不理了。但是內建函式實在太短小精悍,很好用,所以總是不可避免的要遇到,所以還是下決心好好分析一下。我現在遇到過的有幾種 filter,map,reduce,lamb...