成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Python中內建模塊collections如何使用

瀏覽:206日期:2022-07-24 11:05:31

collections是Python內建的一個集合模塊,提供了許多有用的集合類。

這里舉幾個例子:

namedtuple

我們知道tuple可以表示不變集合,例如,一個點的二維坐標就可以表示成:

>>> p = (1, 2)

但是,看到(1, 2),很難看出這個tuple是用來表示一個坐標的。

定義一個class又小題大做了,這時,namedtuple就派上了用場:

>>> from collections import namedtuple>>> Point = namedtuple(’Point’, [’x’, ’y’])>>> p = Point(1, 2)>>> p.x1>>> p.y2

namedtuple是一個函數,它用來創建一個自定義的tuple對象,并且規定了tuple元素的個數,并可以用屬性而不是索引來引用tuple的某個元素。

這樣一來,我們用namedtuple可以很方便地定義一種數據類型,它具備tuple的不變性,又可以根據屬性來引用,使用十分方便。

可以驗證創建的Point對象是tuple的一種子類:

>>> isinstance(p, Point)True>>> isinstance(p, tuple)True

類似的,如果要用坐標和半徑表示一個圓,也可以用namedtuple定義:

# namedtuple(’名稱’, [屬性list]):Circle = namedtuple(’Circle’, [’x’, ’y’, ’r’])

deque

使用list存儲數據時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因為list是線性存儲,數據量大的時候,插入和刪除效率很低。

deque是為了高效實現插入和刪除操作的雙向列表,適合用于隊列和棧:

>>> from collections import deque>>> q = deque([’a’, ’b’, ’c’])>>> q.append(’x’)>>> q.appendleft(’y’)>>> qdeque([’y’, ’a’, ’b’, ’c’, ’x’])

deque除了實現list的append()和pop()外,還支持appendleft()和popleft(),這樣就可以非常高效地往頭部添加或刪除元素。

defaultdict

使用dict時,如果引用的Key不存在,就會拋出KeyError。如果希望key不存在時,返回一個默認值,就可以用defaultdict:

>>> from collections import defaultdict>>> dd = defaultdict(lambda: ’N/A’)>>> dd[’key1’] = ’abc’>>> dd[’key1’] # key1存在’abc’>>> dd[’key2’] # key2不存在,返回默認值’N/A’

注意默認值是調用函數返回的,而函數在創建defaultdict對象時傳入。

除了在Key不存在時返回默認值,defaultdict的其他行為跟dict是完全一樣的。

OrderedDict

使用dict時,Key是無序的。在對dict做迭代時,我們無法確定Key的順序。

如果要保持Key的順序,可以用OrderedDict:

>>> from collections import OrderedDict>>> d = dict([(’a’, 1), (’b’, 2), (’c’, 3)])>>> d # dict的Key是無序的{’a’: 1, ’c’: 3, ’b’: 2}>>> od = OrderedDict([(’a’, 1), (’b’, 2), (’c’, 3)])>>> od # OrderedDict的Key是有序的OrderedDict([(’a’, 1), (’b’, 2), (’c’, 3)])

注意,OrderedDict的Key會按照插入的順序排列,不是Key本身排序:

>>> od = OrderedDict()>>> od[’z’] = 1>>> od[’y’] = 2>>> od[’x’] = 3>>> od.keys() # 按照插入的Key的順序返回[’z’, ’y’, ’x’]

OrderedDict可以實現一個FIFO(先進先出)的dict,當容量超出限制時,先刪除最早添加的Key:

from collections import OrderedDictclass LastUpdatedOrderedDict(OrderedDict): def __init__(self, capacity): super(LastUpdatedOrderedDict, self).__init__() self._capacity = capacity def __setitem__(self, key, value): containsKey = 1 if key in self else 0 if len(self) - containsKey >= self._capacity: last = self.popitem(last=False) print ’remove:’, last if containsKey: del self[key] print ’set:’, (key, value) else: print ’add:’, (key, value) OrderedDict.__setitem__(self, key, value)

Counter

Counter是一個簡單的計數器,例如,統計字符出現的個數:

>>> from collections import Counter>>> c = Counter()>>> for ch in ’programming’:... c[ch] = c[ch] + 1...>>> cCounter({’g’: 2, ’m’: 2, ’r’: 2, ’a’: 1, ’i’: 1, ’o’: 1, ’n’: 1, ’p’: 1})

Counter實際上也是dict的一個子類,上面的結果可以看出,字符’g’、’m’、’r’各出現了兩次,其他字符各出現了一次。

小結

collections模塊提供了一些有用的集合類,可以根據需要選用。

知識點補充:

在內置數據類型(dict、list、set、tuple)的基礎上,collections模塊還提供了幾個額外的數據類型:Counter、deque、defaultdict、namedtuple和OrderedDict等。

1.namedtuple: 生成可以使用名字來訪問元素內容的tuple

2.deque: 雙端隊列,可以快速的從另外一側追加和推出對象

3.Counter: 計數器,主要用來計數

4.OrderedDict: 有序字典

5.defaultdict: 帶有默認值的字典

以上就是Python中內建模塊collections如何使用的詳細內容,更多關于詳解Python中的內建模塊collections的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美日韩精品一区视频| 欧美亚洲动漫制服丝袜| 久久国产福利| 国产日韩精品一区二区三区在线| 狠狠色综合播放一区二区| 欧美一级专区| 一区二区三区欧美日韩| 国产一区自拍视频| 日本一区二区三区在线观看| 不卡的av电影在线观看| 日韩精品在线一区二区| 国产福利一区二区| 91精品中文字幕一区二区三区| 日本va欧美va瓶| 在线日韩一区二区| 视频一区二区三区中文字幕| 国产日韩一区二区三区在线播放| 国产精品国产自产拍高清av王其| av中文字幕在线不卡| 欧美成人r级一区二区三区| 国产91精品一区二区麻豆亚洲| 欧美群妇大交群中文字幕| 老司机一区二区| 欧美午夜寂寞影院| 久久99久久99小草精品免视看| 欧美性一二三区| 久草中文综合在线| 欧美高清性hdvideosex| 极品少妇一区二区三区精品视频| 在线看一区二区| 九九**精品视频免费播放| 欧美系列亚洲系列| 国产一区二区在线观看免费| 在线不卡欧美精品一区二区三区| 国产精一区二区三区| 日韩一级完整毛片| 国产a级毛片一区| 欧美精品一区在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 精品国产91洋老外米糕| 91亚洲永久精品| 国产女主播在线一区二区| 国外精品视频| 一区二区三区小说| 久久亚洲免费| 国产一区二区三区免费观看| 欧美成人r级一区二区三区| 欧美人与禽猛交乱配视频| 国产精品久久久久久亚洲毛片 | 欧美一区二区三区免费大片| 成人av在线电影| 国产精品久久久久久一区二区三区 | 亚洲电影视频在线| 日本韩国精品在线| 国产精品一区在线观看你懂的| 欧美mv日韩mv国产网站| 91首页免费视频| 亚洲精品国产无天堂网2021| 色香蕉成人二区免费| 国产一区二区三区免费| 久久日韩粉嫩一区二区三区| 欧美日韩四区| 亚洲激情av在线| 在线国产电影不卡| 国产麻豆午夜三级精品| 久久久不卡影院| 亚洲第一黄色| 日产欧产美韩系列久久99| 欧美日韩免费不卡视频一区二区三区 | 亚洲免费av观看| 老司机免费视频久久| 国产精品1024久久| 国产精品久久久久久久久图文区| 香蕉久久国产| 国产高清在线观看免费不卡| 亚洲国产精品二十页| 久久久人人人| 处破女av一区二区| 一区二区中文字幕在线| 久久久综合香蕉尹人综合网| 国产成人自拍网| 中文字幕欧美区| 性刺激综合网| 国产成人免费9x9x人网站视频| 综合久久国产九一剧情麻豆| 精品视频999| 国内揄拍国内精品久久| 青青草精品视频| 国产欧美精品日韩区二区麻豆天美| 国产毛片久久| 国产传媒久久文化传媒| 中文字幕中文字幕一区| 欧美性极品少妇| 午夜欧美精品久久久久久久| 视频一区二区三区中文字幕| 久久久亚洲精华液精华液精华液| 亚洲欧美大片| 99精品1区2区| 日日摸夜夜添夜夜添国产精品| www成人在线观看| 一本大道久久精品懂色aⅴ| 99精品国产视频| 日韩电影免费一区| 欧美国产国产综合| 欧美日韩一级黄| 国产综合18久久久久久| 久久精品国产亚洲a| 中文字幕av一区二区三区免费看| 在线观看中文字幕不卡| 欧美日韩国产综合网| 裸体一区二区三区| 国产欧美日本一区二区三区| 欧美日韩一区三区四区| 一本一本久久a久久精品综合妖精| 国产精品自拍三区| 亚洲精品网站在线观看| 日韩三区在线观看| 免费日韩av片| 欧美日本国产精品| 韩国三级电影一区二区| 亚洲男人电影天堂| 精品国产免费人成在线观看| 久久三级视频| 欧美日韩伊人| 国产精品99久久久久久宅男| 一区二区三区中文字幕电影| 欧美一区二区三区免费视频 | 西西裸体人体做爰大胆久久久| caoporen国产精品视频| 另类中文字幕网| 亚洲激情综合网| 久久久精品综合| 欧美片网站yy| 免费永久网站黄欧美| 欧美日韩国产高清视频| 国产精品1区2区3区在线观看| 亚洲6080在线| 国产精品大尺度| 欧美精品一区二区三区久久久| 夜夜嗨av一区二区三区网站四季av| 成人免费视频视频| 精品一区二区三区欧美| 性感美女久久精品| 亚洲女同ⅹxx女同tv| 国产午夜精品福利| 欧美成人激情免费网| 欧美日韩高清一区二区三区| 久久aⅴ国产紧身牛仔裤| 亚洲私拍自拍| 欧美在线1区| 丁香激情综合国产| 国产乱淫av一区二区三区| 日本成人中文字幕| 夜夜精品视频一区二区| 中文字幕一区二区三区不卡| 久久这里都是精品| 日韩一区二区精品在线观看| 欧美精品自拍偷拍| 在线观看国产一区二区| 久久国产精品毛片| 国产伦精品一区二区三区照片91 | 97久久超碰精品国产| 精品综合免费视频观看| 天天操天天色综合| 亚洲精品你懂的| 成人欧美一区二区三区在线播放| 久久精品人人做| 国产亚洲人成网站| 久久这里只有精品首页| 欧美成人官网二区| 日韩精品一区二区在线观看| 777色狠狠一区二区三区| 在线播放欧美女士性生活| 欧美综合久久久| 色狠狠av一区二区三区| 玖玖国产精品视频| 久久精品日产第一区二区| 一本色道久久综合亚洲精品高清| 亚洲承认在线| 日韩亚洲精品在线| 国产精品一级久久久| 亚洲一区激情| 老司机午夜精品视频在线观看| 在线视频综合导航| 欧美日韩精品一区二区| 精品视频资源站| 欧美一区二区在线免费观看| 91精品国产高清一区二区三区 | 欧美日韩国产色综合一二三四| 欧美日韩调教| 亚洲黄色av| 一区二区不卡在线视频 午夜欧美不卡'| 日韩视频不卡| 亚洲一区二区三区精品视频 | 久久人人爽人人爽| 国产欧美一区二区三区沐欲| 中文在线一区二区| 中文字幕日韩精品一区| 亚洲欧美国产三级| 亚洲午夜精品17c|