亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

使用Python的內建模塊collections的教程

2020-01-04 19:21:15
字體:
來源:轉載
供稿:網友

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 = capacitydef __setitem__(self, key, value):containsKey = 1 if key in self else 0if len(self) - containsKey >= self._capacity:last = self.popitem(last=False)print 'remove:', lastif 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模塊提供了一些有用的集合類,可以根據需要選用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久噜噜噜久噜久久| 欧美一级片久久久久久久| 亚洲欧美中文日韩在线v日本| 欧美成人精品不卡视频在线观看| 91精品一区二区| 九九精品在线观看| 中文字幕亚洲欧美日韩2019| 精品人伦一区二区三区蜜桃免费| 日韩av综合网站| 成人黄色免费网站在线观看| 精品中文字幕在线2019| 精品在线观看国产| 亚洲白拍色综合图区| 国产日韩综合一区二区性色av| 国产v综合ⅴ日韩v欧美大片| 伊人久久久久久久久久| 国产黑人绿帽在线第一区| 午夜精品美女自拍福到在线| 亚洲欧美激情一区| 国产美女精彩久久| 色综合色综合久久综合频道88| 久久久久久久色| 成人国产在线视频| 亚洲欧洲激情在线| 精品视频在线播放免| 91理论片午午论夜理片久久| 欧美韩国理论所午夜片917电影| 欧美性猛交xxxx乱大交极品| 国内精品400部情侣激情| 国产在线精品自拍| 国产精品久久二区| 一本色道久久88亚洲综合88| 久久综合五月天| 日韩中文字幕在线观看| 日韩欧美在线视频日韩欧美在线视频| 欧美性受xxxx黑人猛交| 国产精品av在线播放| 久久久欧美一区二区| 国产精品免费久久久久久| 亚洲少妇中文在线| 欧美大片在线影院| 国产一区二区三区在线| 亚洲欧洲在线视频| 91亚洲午夜在线| 成人性生交大片免费看视频直播| 91在线精品播放| 亚洲精品久久久一区二区三区| 青青久久av北条麻妃黑人| 尤物yw午夜国产精品视频明星| 狠狠躁夜夜躁人人爽天天天天97| 日韩精品视频在线观看免费| 亚洲成成品网站| 亚洲精品二三区| 欧美成人h版在线观看| 国产精品久久久久久av福利| 国产黑人绿帽在线第一区| 日韩中文字幕免费看| 国产精品日日做人人爱| 久久久久久久久久国产| 日韩中文字幕在线观看| 欧美黑人性生活视频| 午夜精品三级视频福利| 亚洲va久久久噜噜噜| 日韩视频永久免费观看| 亚洲精品一区中文字幕乱码| 国产91精品黑色丝袜高跟鞋| 91精品国产高清久久久久久| 欧美另类第一页| 日本亚洲精品在线观看| 国产成人中文字幕| 亚洲香蕉成视频在线观看| 中文字幕不卡在线视频极品| 成人福利免费观看| 91精品中国老女人| 日韩有码在线视频| 日韩中文字幕欧美| 国内精品模特av私拍在线观看| 亚洲区一区二区| 国产一区二区三区在线看| 久久天天躁狠狠躁夜夜躁2014| 亚洲第一色在线| 91久久综合亚洲鲁鲁五月天| 亚洲第一页中文字幕| 一区二区三区美女xx视频| 色偷偷888欧美精品久久久| 日本成人在线视频网址| 亚洲国产精品电影在线观看| 亚洲白虎美女被爆操| 欧美日韩999| 久久久久久久成人| 亚洲毛片一区二区| 亚洲欧美日韩一区在线| 久久国产精品久久久| 日韩欧美有码在线| 国产精品狼人色视频一区| 2020欧美日韩在线视频| 成人乱人伦精品视频在线观看| 欧美高清视频在线| 久久久久久久亚洲精品| 欧美老女人www| 亚洲成人国产精品| 91国偷自产一区二区三区的观看方式| 97成人超碰免| 国产成人激情小视频| 精品中文视频在线| 永久免费看mv网站入口亚洲| 九九热最新视频//这里只有精品| 国产精品男女猛烈高潮激情| 麻豆乱码国产一区二区三区| 国产精品电影在线观看| 另类专区欧美制服同性| 国产精品久久久久久久久久东京| 国模精品视频一区二区三区| 国产精品久久久久久久久久小说| 97在线视频免费播放| 国产精品久久电影观看| 色偷偷噜噜噜亚洲男人| www.亚洲一区| 国产精品91一区| xvideos亚洲| 久久中文精品视频| 国产69精品久久久久9| 国产99久久精品一区二区 夜夜躁日日躁| 久久激情视频免费观看| 精品视频久久久| 91久久久国产精品| 欧美一区深夜视频| 美女久久久久久久久久久| 欧美一级视频免费在线观看| 日韩激情在线视频| 亚洲成人动漫在线播放| 久久精品男人天堂| 日韩精品中文字幕在线播放| 一区二区三区视频免费| 亚洲国内精品在线| 亚洲香蕉伊综合在人在线视看| 久久69精品久久久久久国产越南| 久99久在线视频| 亚洲精品乱码久久久久久金桔影视| 福利视频一区二区| 欧美日韩福利电影| 国产精品久久久久久久午夜| 日韩精品一区二区视频| 欧美又大又硬又粗bbbbb| 国产婷婷97碰碰久久人人蜜臀| 粉嫩av一区二区三区免费野| 国产午夜精品一区理论片飘花| 2024亚洲男人天堂| 日韩午夜在线视频| 国产精品在线看| 亚洲午夜久久久久久久| 性欧美视频videos6一9| 国产成人精品视频在线观看| 国模私拍视频一区| 欧美最顶级丰满的aⅴ艳星| 午夜精品视频在线| 国产精品18久久久久久麻辣| www欧美日韩| 在线观看国产精品91| 国产在线日韩在线| 日韩精品极品在线观看| 91精品久久久久久久久久入口| 欧洲成人午夜免费大片| 九色精品美女在线|