Python內(nèi)置模塊collections是什么-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、舟山網(wǎng)絡(luò)推廣、微信小程序、舟山網(wǎng)絡(luò)營銷、舟山企業(yè)策劃、舟山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供舟山建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:muchs.cn

Python內(nèi)置模塊collections是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

collections模塊

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

1、namedtuple: 生成可以使用名字來訪問元素內(nèi)容的tuple。

2、deque: 雙端隊列,可以快速的從頭或尾追加和刪除元素。

3、Counter: 計數(shù)器,主要用來計數(shù)。

4、OrderedDict: 有序字典。

5、defaultdict: 帶有默認(rèn)值的字典。

namedtuple:命名元組

我們知道元組是不可被修改的容器,如元組(10,2),單從這個元組的元素來看,我們不知道這個元組的元素到底表示的是什么。它可以表示一對普通數(shù)字,亦可以表示一個坐標(biāo)軸的兩個坐標(biāo),還可以表示10的2次冪等,為了解決這個問題namedtuple應(yīng)運而生。下面是基礎(chǔ)示例:

我們假設(shè)(10,2)是一個坐標(biāo):

from collections import namedtuple
# 創(chuàng)建命名元組對象命名,并指定元組長度
point = namedtuple("point",["x","y"])
# 創(chuàng)建命名元組
tuple_1 = point(10,2)
# 以x,y的形式打印元素
print(tuple_1.x,tuple_1.y)

打印內(nèi)容如下

10 2

下面以計算長方體體積為例:

from collections import namedtuple
# 創(chuàng)建命名元組對象命名,并指定元組長度
Cuboid = namedtuple("Cuboid",["len","width","height"])
# 創(chuàng)建命名元組
tuple_1 = Cuboid(10,8,6)
# 對比兩種打印方式我們就可以看出
# 第一種明顯比第二種打印方式更容易理解
print(tuple_1.len * tuple_1.width * tuple_1.height)
print(tuple_1[0] * tuple_1[1] * tuple_1[2])

打印內(nèi)容如下

480
480

由上面的示例可以知道有時候利用命名元組引用元素的時候,我們可以更容易理解元素所表示的是什么。這樣對代碼的理解會更好。

deque:雙端隊列

deque與列表類似都是線性存儲,但是隊列只支持在隊列的頭部和尾部追加和刪除元素,屬于列表的特殊版。在插入元素和刪除元素的效率上比列表更快。因為列表不僅可以在頭部和尾部追加和刪除元素,還可以在任意位置追加和刪除元素。每當(dāng)列表刪除一個非頭部和尾部元素的時候,列表就要重新進行排序以保證列表的線性存儲。如下圖所示:

Python內(nèi)置模塊collections是什么

由上圖我們知道元素30對應(yīng)的內(nèi)存地址是3,刪除元素30后,為保證列表的線性,元素40和元素50內(nèi)存地址都向前移了一位,元素40的內(nèi)存地址由原來的4變成3,元素50的內(nèi)存地址由原來的5變成4。如果把列表的第一個元素刪除了,后面的整個列表都會依次向前補齊位置。而雙端隊列不會,無論是刪除隊列的頭還是尾隊列的整體不會進行補位的操作。

from collections import deque
deque_list = deque([1,2,3,4])
deque_list.appendleft("a")  # 向頭部追加元素
deque_list.append("z")      # 向尾部追加元素
print("追加后的數(shù)據(jù)是:",deque_list)
deque_list.pop()  # 刪除尾部元素
deque_list.popleft()  # 刪除頭部元素
print("刪除后的數(shù)據(jù)是:",deque_list)

打印內(nèi)容如下

追加后的數(shù)據(jù)是: deque(['a', 1, 2, 3, 4, 'z'])
刪除后的數(shù)據(jù)是: deque([1, 2, 3, 4])

OrderedDict:有序字典,有序字典是按照鍵插入順序進行排列的(Python3.X的字典是按著鍵插入順序進行排序的,Python2.X的字典鍵是按照ASCII表的順序進行排序。)

如下:Python2.7中進行測試。

dict_1 = {}
dict_1["z"] = 1
dict_1["c"] = 3
dict_1["a"] = 2
dict_od = OrderedDict()  # 有序字典
dict_od["z"] = 1
dict_od["c"] = 3
dict_od["a"] = 2
print(dict_1)
print(dict_od)  # 打印有序字典

打印內(nèi)容如下

{'a': 2, 'c': 3, 'z': 1}
OrderedDict([('z', 1), ('c', 3), ('a', 2)])

defaultdict:默認(rèn)字典,我感覺這個還是有些用的。

1、如果默認(rèn)字典的鍵不存在,不會報錯。

2、在定義默認(rèn)字典時可以指定值的類型。

示例:將列表中大于3的元素保存到字典的“a”鍵中,將小于3的元素保存到字典的“b”鍵中。

如下:使用普通字典的方法。

list_1 = [1,2,3,4,5,6]
dict_1 = {}
for i in list_1:
    if i > 3:
        if "a" in dict_1:
            dict_1["a"].append(i)
        else:
            dict_1["a"] = [i]
    else:
        if "b" in dict_1:
            dict_1["b"].append(i)
        else:
            dict_1["b"] = [i]
print(dict_1)

打印內(nèi)容如下

{'b': [1, 2, 3], 'a': [4, 5, 6]}

如下:使用默認(rèn)字典的方法。

from collections import defaultdict
list_1 = [1,2,3,4,5,6]
dict_d = defaultdict(list)  # 定義默認(rèn)字典
for i in list_1:
    if i > 3:
        dict_d["a"].append(i)
    else:
        dict_d["b"].append(i)
print(dict_d)
# 打印內(nèi)容如下
defaultdict(<class 'list'>, {'b': [1, 2, 3], 'a': [4, 5, 6]})

對比兩個代碼段可以發(fā)現(xiàn)使用默認(rèn)字典的方式代碼更加簡潔,結(jié)構(gòu)更加清晰明了。

Counter:統(tǒng)計可迭代對象中每個元素出現(xiàn)的次數(shù)。

from collections import Counter
list_1 = ["a","b","a",1,2,3,1]
print(Counter(list_1))
# 打印內(nèi)容如下
Counter({'a': 2, 1: 2, 'b': 1, 2: 1, 3: 1})

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

本文標(biāo)題:Python內(nèi)置模塊collections是什么-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://muchs.cn/article24/dejhce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站建設(shè)網(wǎng)站策劃、品牌網(wǎng)站制作、手機網(wǎng)站建設(shè)、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)