国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python collections模塊實例講解

2020-02-23 05:17:31
字體:
來源:轉載
供稿:網友

collections模塊基本介紹

我們都知道,Python擁有一些內置的數據類型,比如str, int, list, tuple, dict等, collections模塊在這些內置數據類型的基礎上,提供了幾個額外的數據類型:

1.namedtuple(): 生成可以使用名字來訪問元素內容的tuple子類
2.deque: 雙端隊列,可以快速的從另外一側追加和推出對象
3.Counter: 計數器,主要用來計數
4.OrderedDict: 有序字典
5.defaultdict: 帶有默認值的字典

namedtuple()

namedtuple主要用來產生可以使用名稱來訪問元素的數據對象,通常用來增強代碼的可讀性, 在訪問一些tuple類型的數據時尤其好用。

舉個栗子
代碼如下:
# -*- coding: utf-8 -*-
"""
比如我們用戶擁有一個這樣的數據結構,每一個對象是擁有三個元素的tuple。
使用namedtuple方法就可以方便的通過tuple來生成可讀性更高也更好用的數據結構。
"""
from collections import namedtuple
websites = [
    ('Sohu', 'http://www.google.com/', u'張朝陽'),
    ('Sina', 'http://www.sina.com.cn/', u'王志東'),
    ('163', 'http://www.163.com/', u'丁磊')
]
Website = namedtuple('Website', ['name', 'url', 'founder'])
for website in websites:
    website = Website._make(website)
    print website
# Result:
Website(name='Sohu', url='http://www.google.com/', founder=u'/u5f20/u671d/u9633')
Website(name='Sina', url='http://www.sina.com.cn/', founder=u'/u738b/u5fd7/u4e1c')
Website(name='163', url='http://www.163.com/', founder=u'/u4e01/u78ca')

deque

deque其實是 double-ended queue 的縮寫,翻譯過來就是雙端隊列,它最大的好處就是實現了從隊列 頭部快速增加和取出對象: .popleft(), .appendleft() 。

你可能會說,原生的list也可以從頭部添加和取出對象啊?就像這樣:
代碼如下:
l.insert(0, v)
l.pop(0)
但是值得注意的是,list對象的這兩種用法的時間復雜度是 O(n) ,也就是說隨著元素數量的增加耗時呈 線性上升。而使用deque對象則是 O(1) 的復雜度,所以當你的代碼有這樣的需求的時候, 一定要記得使用deque。

作為一個雙端隊列,deque還提供了一些其他的好用方法,比如 rotate 等。

舉個栗子
代碼如下:
# -*- coding: utf-8 -*-
"""
下面這個是一個有趣的例子,主要使用了deque的rotate方法來實現了一個無限循環
的加載動畫
"""
import sys
import time
from collections import deque
fancy_loading = deque('>--------------------')
while True:
    print '/r%s' % ''.join(fancy_loading),
    fancy_loading.rotate(1)
    sys.stdout.flush()
    time.sleep(0.08)
# Result:
# 一個無盡循環的跑馬燈
------------->-------


Counter

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新津县| 东丽区| 兴文县| 嵊泗县| 阳朔县| 姜堰市| 庆安县| 铁岭县| 寻甸| 鄄城县| 府谷县| 瑞金市| 沅陵县| 米泉市| 巴彦淖尔市| 桐庐县| 湘潭市| 崇信县| 华亭县| 遂川县| 米泉市| 龙口市| 巴彦淖尔市| 东光县| 北海市| 天祝| 花垣县| 海宁市| 南江县| 长治县| 简阳市| 石阡县| 保德县| 绥宁县| 永善县| 承德市| 灵台县| 博兴县| 通化县| 宜君县| 南召县|