- 數組反轉:
- nums[::-1], 比如nums=[1,2,3], 那么nums[::-1]=[3,2,1]
- nums.reverse()函數也是可以的
- reverse函數和nums[::-1]區別在于:reverse操作之后nums本身也進行了改變,即nums[::-1] = [3,2,1],而nums=[1,2,3]; 而nums.reverse() = [3,2,1], nums=[3,2,1]
- range的使用:
- range(x,y,z): x:表示起始的標號;y:表示小于該值推出循環;z:表示每次跨越步數
- **collections.Counter(): **
- 對于一個數組nums=[1,2,3,1], 若進行 nmap = collections.Counter(nums),則會得到一個字典:{1:2, 2:1, 3:1}.
- 使用Counter構建的字典和使用damp={}構架的字典區別在于,Counter的使用即使當時不存在key,也可以執行nmap[key]+=1(它會默認nmap[key]=0),而直接使用字典則會報錯
- enumerate函數的使用:
- 比如nums=[3,5,10,2], 那么enumerate(nums)則可以得到key-value對,其中key表示該元素對應的標號,val表示原來數組中的值。 如0:3,1:5等,其中0表示3所在的數組中的位置,3表示該數組的值
- python字符串的特性:
- 'a'*3 = 'aaa';
- join函數的使用,比如' '.join(nums),如果nums為空則返回空;nums為一個元素,則返回該元素;否則的話,返回nums中每個元素間加上一個空格所構成的字符串
- python dict 同一個key 對應多個value:
- dmap={}
- dmap.setdefault(val,set()).add(); set 對應是add操作
- dmap.setdefault(val,[]).append(); list 對應是append操作
- dmap.setdefault(val,{})[keyin]=[valuein]
- 字符串的處理:
-
chr(): 將int數據轉位字符型數據,如chr(97)='a';
-
ord(): 將char數據轉為int型數據,如ord('a')=97;
-
isalnum() : 字符串操作方法,檢測字符串是否由字母和數字組成。如'aba123'.isalnum()=True;'aba,.,123'=False
- list基本操作:
- L.append(val) #追加元素
- L.insert(index, var) #在某個具體位置加入元素
- L.pop(var) #返回最后一個元素,并從list中刪除之,該方法適用于stack
- L.remove(var) #刪除第一次出現的該元素,如果有重復數據時注意該方法的使用,免得造成數據誤刪除
- L.count(var) #該元素在列表中出現的個數
- L.index(var) #該元素的位置, 無則拋異常
- L.extend(list) #追加list,即合并list到L上
- L.sort() #排序,該操作后原數組的也會發生變化
- L.reverse() #倒序 原數組不會發生變化
- tuple的神奇之處:
- python中list、dict是不可以作為key值的進行hash的,而python中的tuple是可以進行hash的??!該操作在某些字符串處理中有很大的作用!
- tuple([2,1,4,5,1]) = (2,1,4,5,1)
-
heapq模塊:
處理topN問題時經常要使用到堆這種數據結構。c++中有大(小)頂堆,而在python 中就要使用heapq模塊來實現相同的操作。在python中可以將堆看成一種特殊結構的列表,該列表具備堆的性質。heapq有如下常見操作:import heapq as hq
heapq官方文檔及說明
-
heappush(): hq.heappush(heap,value), 將value壓入堆數組heap中,從而構建堆結構(默認最小頂堆)
-
heappop(): hq.heappop(heap), 從heap堆中刪除最小的值,并返回
-
heapify():hq.heapify(list), 該操作將list類型轉位最小頂堆,注意一定要是list類型才能轉換
-
heap.nlargest(k, list)以及heap.nsmallest(k, list): 從名字上可知,兩個函數分別獲去堆的前k大以及前k小元素。即輸入一個list類型先轉換為堆,從而獲取topN的元素。
-
heap.merge(iterables):* heapq模塊提供的歸并操作
>>> a=[1,3,5]
>>> b=[2,4,6]
>>> c=merge(a,b)
>>> list(c)
[1, 2, 3, 4, 5, 6]
-
heapq.heappushpop(heap, item)以及heapq.heapreplace(heap, item): 上述兩個函數將push和pop操作合并一起,前者先進行push然后再pop,后者先進行pop然后再進行push操作。注意:如果heapreplace對于空列表操作會報錯
-
bisect模塊:
bisect模塊使用時要保證列表已經是有序的。
- insort函數:bisect.insort(data,value),將value插入到已有列表data中,插入結果不會影響原來的排序
- bisect函數:bisect.bisect(data,value),該函數的目的在于返回value需要插入到data列表中的位置并返回,但是不會執行插入操作。
- bisect_left函數和bisect_right函數:與bisect函數的功能一樣,但是這兩個函數用來處理有重復值的情況,left表明返回重復值左邊的位置,right反之
- insort_left函數和insort_right函數:與insort函數功能一樣,但是是用來處理重復值情況,left表明插入到重復值左邊,right則反之。
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。