日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
pythoncollections模塊使用方法

collections模塊實(shí)現(xiàn)一些特定的數(shù)據(jù)類型,可以替代Python中常用的內(nèi)置數(shù)據(jù)類型如dict, list, set, tuple,簡(jiǎn)單說(shuō)就是對(duì)基本數(shù)據(jù)類型做了更上一層的處理。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到岫巖網(wǎng)站設(shè)計(jì)與岫巖網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋岫巖地區(qū)。

1. deque雙端隊(duì)列

平常我們使用的python內(nèi)置list類的append,extend,pop方法都是從list的尾部執(zhí)行的(pop()默認(rèn)彈出最后一個(gè)元素)。在使用的時(shí)候,list很像是一種棧結(jié)構(gòu)(LIFO)。不同的是list靈活性更強(qiáng),在棧的基礎(chǔ)上有動(dòng)態(tài)插入的方法,即insert(index,obj)和索引、切片等操作。強(qiáng)大的list似乎也可以實(shí)現(xiàn)隊(duì)列(FIFO),但由于它實(shí)在太靈活了,列表中的元素極容易改變,在使用時(shí)令人總是不那么放心。為了實(shí)現(xiàn)更好的隊(duì)列結(jié)構(gòu),一般程序員會(huì)自己實(shí)現(xiàn)一個(gè)類。

collections模塊中為我們提供的雙端隊(duì)列是在隊(duì)列的基礎(chǔ)上實(shí)現(xiàn)頭尾兩端可append、可pop。另外還有insert,rotate等方法,也是相當(dāng)靈活的 關(guān)鍵方法:

append() #從右端添加元素(與list同) appendleft() #從左端添加元素(與list同) extend() #從右端逐個(gè)添加可迭代對(duì)象(與list同) extendleft() #從左端逐個(gè)添加可迭代對(duì)象(與list同) pop() #從右端彈出元素(與list同) popleft() #從左端彈出數(shù)據(jù) count() #統(tǒng)計(jì)隊(duì)列中的元素個(gè)數(shù)(與list同) insert(index,obj) #在指定位置插入元素(與list同) rotate() #旋轉(zhuǎn)隊(duì)列

基本使用例子:

from  collections import deque

d = deque()
#增加數(shù)據(jù)
d.append('1')
d.append('2')
d.appendleft('3')
l = ['4','5']
d.extend(l)
d.extendleft(l)
print(d)

#計(jì)算deque元素個(gè)數(shù)
print(d.count('5'))

#循環(huán)移動(dòng)
d.rotate(1)
print(d)
d.rotate(-1)
print(d)

#計(jì)算股票和倉(cāng)庫(kù)存貨常用的移動(dòng)平均數(shù)

from collections import deque
import itertools
def moving_average(iterable,n=3):
   it = iter(iterable)
   d = deque(itertools.islice(it,n-1))  #迭代出前2個(gè)數(shù)據(jù)
   print(d)
   d.appendleft(0)  #防止第一次運(yùn)行算法時(shí)候把第一個(gè)數(shù)據(jù)刪除
   s = sum(d)
   print(d)
   print(s)
   for elem in it:
       s += elem-d.popleft()
       d.append(elem)
       yield s/float(n)

l = [10,20,18,27,15]
for average in moving_average(l):
 print(average)

2. defaultdict 默認(rèn)字典

我們平常在使用python內(nèi)置的dict的時(shí)候,根據(jù)鍵key去查詢對(duì)應(yīng)的value值,如果不存在對(duì)應(yīng)的key,會(huì)報(bào)錯(cuò)(KeyError)。但是在defaultdict就會(huì)會(huì)出現(xiàn)這個(gè)問(wèn)題。

例子:

dd = defaultdict(lambda:"none")    #只需要在定義的時(shí)候?yàn)椴淮嬖诘膋ey定義指定的顯示值
dd["a"] = "apple"
dd["b"] = "banana"

print(dd["c"])
print(dd)

結(jié)果:
>>>none
>>>defaultdict(function 
  
    at 0x0000023B1C1919D8>, {
   'c': 
   'none', 
   'a': 
   'apple', 
   'b': 
   'banana'}) 
  

由第二條的結(jié)果可以看出,defaultdict將不存在的鍵專門用一個(gè)字典來(lái)存放,而存在的鍵存放在另外一個(gè)字典中。當(dāng)需要查詢?cè)貢r(shí),如果遇到?jīng)]有的鍵key,就會(huì)獲取第一字典中預(yù)先設(shè)定好的顯示值。

3. OrderDict 有序字典

在使用python內(nèi)置的dict時(shí),用print()打印出整個(gè)字典,會(huì)發(fā)現(xiàn)前后兩次字典的鍵值對(duì)順序是不一樣的(筆者猜測(cè)是前后兩次的hash值不一樣的緣故)。而在有序字典OderDict中,這種現(xiàn)象不會(huì)在發(fā)生。

例子:

od = OrderedDict()
od["1"] = "one"
od["2"] = "two"
od["3"] = "three"
od["4"] = "four"
od["5"] = "five"

結(jié)果:
OrderedDict([('1', 'one'), ('2', 'two'), ('3', 'three'), ('4', 'four'), ('5', 'five')])

文章題目:pythoncollections模塊使用方法
文章分享:http://www.dlmjj.cn/article/djgcdgj.html