日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python之collections模块详细实例

發(fā)布時(shí)間:2025/3/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之collections模块详细实例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python作為一個(gè)“內(nèi)置電池”的編程語言,標(biāo)準(zhǔn)庫里面擁有非常多好用的模塊。比如今天想給大家 介紹的collections?就是一個(gè)非常好的例子。

基本介紹

我們都知道,Python擁有一些內(nèi)置的數(shù)據(jù)類型,比如str, int, list, tuple, dict等, collections模塊在這些內(nèi)置數(shù)據(jù)類型的基礎(chǔ)上,提供了幾個(gè)額外的數(shù)據(jù)類型:

  • namedtuple(): 生成可以使用名字來訪問元素內(nèi)容的tuple子類
  • deque: 雙端隊(duì)列,可以快速的從另外一側(cè)追加和推出對象
  • Counter: 計(jì)數(shù)器,主要用來計(jì)數(shù)
  • OrderedDict: 有序字典
  • defaultdict: 帶有默認(rèn)值的字典

namedtuple()

namedtuple主要用來產(chǎn)生可以使用名稱來訪問元素的數(shù)據(jù)對象,通常用來增強(qiáng)代碼的可讀性, 在訪問一些tuple類型的數(shù)據(jù)時(shí)尤其好用。

舉個(gè)栗子

# -*- coding: utf-8 -*- """ 比如我們用戶擁有一個(gè)這樣的數(shù)據(jù)結(jié)構(gòu),每一個(gè)對象是擁有三個(gè)元素的tuple。 使用namedtuple方法就可以方便的通過tuple來生成可讀性更高也更好用的數(shù)據(jù)結(jié)構(gòu)。 """ from collections import namedtuplewebsites = [('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其實(shí)是?double-ended?queue?的縮寫,翻譯過來就是雙端隊(duì)列,它最大的好處就是實(shí)現(xiàn)了從隊(duì)列 頭部快速增加和取出對象:?.popleft(),?.appendleft()?。

你可能會(huì)說,原生的list也可以從頭部添加和取出對象啊?就像這樣:

insert(0, v)
pop(0)

但是值得注意的是,list對象的這兩種用法的時(shí)間復(fù)雜度是?O(n)?,也就是說隨著元素?cái)?shù)量的增加耗時(shí)呈 線性上升。而使用deque對象則是?O(1)?的復(fù)雜度,所以當(dāng)你的代碼有這樣的需求的時(shí)候, 一定要記得使用deque。

作為一個(gè)雙端隊(duì)列,deque還提供了一些其他的好用方法,比如?rotate?等。

舉個(gè)栗子

# -*- coding: utf-8 -*- """ 下面這個(gè)是一個(gè)有趣的例子,主要使用了deque的rotate方法來實(shí)現(xiàn)了一個(gè)無限循環(huán) 的加載動(dòng)畫 """ import sys import time from collections import dequefancy_loading = deque('>--------------------')while True:print '\r%s' % ''.join(fancy_loading),fancy_loading.rotate(1)sys.stdout.flush()time.sleep(0.08)# Result:# 一個(gè)無盡循環(huán)的跑馬燈 ------------->-------

Counter

計(jì)數(shù)器是一個(gè)非常常用的功能需求,collections也貼心的為你提供了這個(gè)功能。

舉個(gè)栗子

# -*- coding: utf-8 -*- """ 下面這個(gè)例子就是使用Counter模塊統(tǒng)計(jì)一段句子里面所有字符出現(xiàn)次數(shù) """ from collections import Counters = '''A Counter is a dict subclass for counting hashable objects. It is an unordered collection where elements are stored as dictionary keys and their counts are stored as dictionary values. Counts are allowed to be any integer value including zero or negative counts. The Counter class is similar to bags or multisets in other languages.'''.lower()c = Counter(s) # 獲取出現(xiàn)頻率最高的5個(gè)字符 print c.most_common(5)# Result: [(' ', 54), ('e', 32), ('s', 25), ('a', 24), ('t', 24)]

OrderedDict

在Python中,dict這個(gè)數(shù)據(jù)結(jié)構(gòu)由于hash的特性,是無序的,這在有的時(shí)候會(huì)給我們帶來一些麻煩, 幸運(yùn)的是,collections模塊為我們提供了OrderedDict,當(dāng)你要獲得一個(gè)有序的字典對象時(shí),用它就對了。

舉個(gè)栗子

# -*- coding: utf-8 -*- from collections import OrderedDictitems = (('A', 1),('B', 2),('C', 3) )regular_dict = dict(items) ordered_dict = OrderedDict(items)print 'Regular Dict:' for k, v in regular_dict.items():print k, vprint 'Ordered Dict:' for k, v in ordered_dict.items():print k, v# Result: Regular Dict: A 1 C 3 B 2 Ordered Dict: A 1 B 2 C 3

defaultdict

我們都知道,在使用Python原生的數(shù)據(jù)結(jié)構(gòu)dict的時(shí)候,如果用?d[key]?這樣的方式訪問, 當(dāng)指定的key不存在時(shí),是會(huì)拋出KeyError異常的。

但是,如果使用defaultdict,只要你傳入一個(gè)默認(rèn)的工廠方法,那么請求一個(gè)不存在的key時(shí), 便會(huì)調(diào)用這個(gè)工廠方法使用其結(jié)果來作為這個(gè)key的默認(rèn)值。

# -*- coding: utf-8 -*- from collections import defaultdictmembers = [# Age, name['male', 'John'],['male', 'Jack'],['female', 'Lily'],['male', 'Pony'],['female', 'Lucy'], ]result = defaultdict(list) for sex, name in members:result[sex].append(name)print result# Result: defaultdict(<type 'list'>, {'male': ['John', 'Jack', 'Pony'], 'female': ['Lily', 'Lucy']})

?

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的Python之collections模块详细实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩国产图片 | 欧美日韩综合网 | 一级成人免费 | 国产中文字幕乱人伦在线观看 | 小草av在线 | 五月激情在线观看 | 久久精品欧美一区二区 | 老司机午夜免费福利 | 免费古装一级淫片潘金莲 | 欧洲性猛交 | 西西人体做爰大胆gogo直播 | 亚洲国产无线乱码在线观看 | 国产一区二区三区四区五区 | 日本不卡二区 | 青青在线免费观看 | 亚洲综合五月 | 久久2018| 91蝌蚪视频在线 | 亚洲在线视频播放 | 毛片基地免费观看 | 一区二区三区不卡在线观看 | 奇米第四色7777 | 亚洲综合激情网 | 污污视频免费网站 | 四虎精品在线观看 | 精品中文视频 | 成人黄色在线视频 | 亚洲中文字幕无码不卡电影 | 久久久www免费人成人片 | 久久无毛 | 久久avav| 另类二区| 黄色免费网站在线 | 9久9久9久女女女九九九一九 | 91视频播放器 | 久久精品一日日躁夜夜躁 | 91中文字幕在线观看 | 亚洲黄色一级大片 | www天堂网| 亚洲丝袜天堂 | 成人av中文解说水果派 | 欧美成人三级视频 | 激情另类视频 | 国产精久久久 | jizz网站 | 国色天香一区二区 | 午夜色大片 | 亚洲精品天堂在线观看 | 免费看片色 | 国产精品麻豆视频 | 99国内揄拍国内精品人妻免费 | 性插视频在线观看 | 又黄又高潮的视频 | 色射射| 夜夜夜夜夜操 | 香港三级日本三级 | 成人hd | 国产精品日 | 成人日韩欧美 | 日韩在线免费播放 | 天天操天天射天天爽 | 美女网站免费黄 | 免费在线欧美 | 永久免费看mv网站入口78 | 韩国美女视频在线观看18 | 欧美亚一区二区三区 | 色峰视频| 国产精品视频一区二区三区不卡 | 精品麻豆一区二区 | 精品人妻一区二区三区久久夜夜嗨 | 午夜免费播放观看在线视频 | 亚洲第一字幕 | 99精品成人| 精品视频在线一区二区 | 成人高清视频免费观看 | 国产毛片欧美毛片久久久 | 男人天堂网在线视频 | 91国自产精品中文字幕亚洲 | 欧美一区二区三区在线免费观看 | 天天色综 | 日本女人毛片 | 中文亚洲欧美 | 懂色av一区 | 日本婷婷 | 亚洲美女自拍视频 | 婷婷综合久久 | 麻豆射区| 97视频播放 | 涩色网站 | 日韩av不卡电影 | 免费萌白酱国产一区二区三区 | 亚洲国产电影在线观看 | 中文字幕一区二区三区在线视频 | 黄色小网站入口 | 亚洲高清在线观看 | 怎么可能高潮了就结束漫画 | 丰满女邻居的色诱4hd | 日本亚洲高清 | 亚洲 国产 日韩 欧美 |