偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python進(jìn)階:解密collections庫(kù)的高級(jí)功能

開(kāi)發(fā) 前端
本文主要介紹的Counter和defaultdict類還有雙端隊(duì)列deque的意義和用途,這幾個(gè)類比較常見(jiàn),可以來(lái)詳細(xì)剖析一下。

Python內(nèi)置庫(kù)collections提供了一些強(qiáng)大的工具類,可以簡(jiǎn)化和優(yōu)化我們的編程過(guò)程。本文將重點(diǎn)探索collections庫(kù)中的幾個(gè)類的使用。通過(guò)詳細(xì)的代碼示例和解釋,展示如何利用Counter計(jì)數(shù)和統(tǒng)計(jì)元素,以及如何使用defaultdict創(chuàng)建有默認(rèn)值的字典。本文旨在為Python初學(xué)者提供清晰的指導(dǎo),同時(shí)為其他開(kāi)發(fā)者提供一些啟發(fā)。

一、常見(jiàn)類的介紹

Pythoncollections這個(gè)庫(kù)包含的內(nèi)置對(duì)象很多,這個(gè)是內(nèi)置庫(kù)源碼的一部分,如下所示:

__all__ = [
    'ChainMap',
    'Counter',
    'OrderedDict',
    'UserDict',
    'UserList',
    'UserString',
    'defaultdict',
    'deque',
    'namedtuple',
]

本文主要介紹的Counter和defaultdict類還有雙端隊(duì)列deque的意義和用途,這幾個(gè)類比較常見(jiàn),可以來(lái)詳細(xì)剖析一下。

二、Counter類的使用

1. Counter類的定義和功能說(shuō)明

Counter是一個(gè)用于跟蹤值出現(xiàn)次數(shù)的有序集合。它可以接收一個(gè)可迭代對(duì)象作為參數(shù),并生成一個(gè)字典,其中包含每個(gè)元素作為鍵,其計(jì)數(shù)作為值。

2. 統(tǒng)計(jì)列表或字符串中元素的出現(xiàn)次數(shù)

示例代碼:

from collections import Counter

lst = [1, 2, 3, 1, 2, 1, 2, 3, 4, 5, 4]
counter = Counter(lst)
print(counter)

# 輸出結(jié)果:是一個(gè)類似字典的一個(gè)對(duì)象
# Counter({1: 3, 2: 3, 3: 2, 4: 2, 5: 1})

3. 獲取出現(xiàn)頻率最高的元素

示例代碼:

from collections import Counter

lst = [1, 2, 3, 1, 2, 1, 2, 3, 4, 5, 4]
counter = Counter(lst)
most_common = counter.most_common(2)
print(most_common)

# 輸出結(jié)果:
# [(1, 3), (2, 3)]

4. 合并多個(gè)Counter對(duì)象

示例代碼:

from collections import Counter

counter1 = Counter([1, 2, 3, 1, 2, 1, 2, 3, 4, 5, 4])
counter2 = Counter([1, 2, 3, 4, 5, 6, 7])
combined = counter1 + counter2
print(combined)

# 輸出結(jié)果:
# Counter({1: 4, 2: 4, 3: 3, 4: 3, 5: 2, 6: 1, 7: 1})

5. 排序Counter對(duì)象

示例代碼:

from collections import Counter

lst = [1, 2, 3, 1, 2, 1, 2, 3, 4, 5, 4]
counter = Counter(lst)
sorted_counter = counter.most_common()
print(sorted_counter)

# 輸出結(jié)果:
# [(1, 3), (2, 3), (3, 2), (4, 2), (5, 1)]

請(qǐng)記住,以上示例只是簡(jiǎn)要說(shuō)明該章節(jié)的內(nèi)容。在實(shí)際應(yīng)用中,你可以根據(jù)自己的需求和具體情況來(lái)進(jìn)一步優(yōu)化和擴(kuò)展代碼示例。希望這些示例能夠?qū)δ愕膶W(xué)習(xí)和應(yīng)用提供一些啟發(fā)!如果你有任何更具體的問(wèn)題,我們很樂(lè)意幫助你解答。

三、defaultdict類的使用

1. defaultdict類的定義和特點(diǎn)

defaultdict是collections庫(kù)中的一個(gè)字典子類,它是用來(lái)創(chuàng)建具有默認(rèn)值的字典。與普通字典不同,當(dāng)我們?cè)L問(wèn)一個(gè)不存在的鍵時(shí),defaultdict會(huì)自動(dòng)為該鍵分配一個(gè)默認(rèn)值。

2. 創(chuàng)建具有默認(rèn)值的字典

示例代碼:

from collections import defaultdict

# 創(chuàng)建一個(gè)空的defaultdict,指定默認(rèn)值為0

d = defaultdict(int)

# 訪問(wèn)一個(gè)不存在的鍵,則會(huì)自動(dòng)分配默認(rèn)值0

print(d['a'])
print(d['b'])
print(d['c'])

輸出結(jié)果:
0
0
0

3. 處理字典中不存在的鍵

示例代碼:

from collections import defaultdict

# 創(chuàng)建一個(gè)defaultdict,并指定默認(rèn)值為字符串"Undefined"

d = defaultdict(lambda: "Undefined")

# 訪問(wèn)一個(gè)不存在的鍵,則會(huì)自動(dòng)分配默認(rèn)值"Undefined"

print(d['name'])
print(d['age'])

輸出結(jié)果:
Undefined
Undefined

4. defaultdict與其他數(shù)據(jù)結(jié)構(gòu)的結(jié)合應(yīng)用

示例代碼:

from collections import defaultdict

創(chuàng)建一個(gè)defaultdict,將每個(gè)字母作為鍵,對(duì)應(yīng)的值為一個(gè)列表

d = defaultdict(list)

將一些值添加到列表中

d['a'].append(1)
d['a'].append(2)
d['b'].append(3)

輸出結(jié)果

print(d)

輸出結(jié)果:
defaultdict(<class 'list'>, {'a': [1, 2], 'b': [3]})

在上述示例中,我們通過(guò)defaultdict類創(chuàng)建了具有默認(rèn)值的字典,并展示了其處理不存在的鍵的功能。通過(guò)合理設(shè)置指定的默認(rèn)值,defaultdict在處理字典中不存在的鍵時(shí)能夠提供更好的靈活性和方便性。你可以根據(jù)具體的需求和應(yīng)用場(chǎng)景,調(diào)整和擴(kuò)展這些示例代碼,以便更好地利用defaultdict類實(shí)現(xiàn)你的功能。

四、deque類的詳細(xì)使用

deque(雙端隊(duì)列)是collections庫(kù)中的一個(gè)類,它是一個(gè)線程安全、可以在兩端進(jìn)行高效插入和刪除操作的數(shù)據(jù)結(jié)構(gòu)。deque類實(shí)現(xiàn)了類似列表的功能,但在處理頻繁的首尾插入和刪除時(shí)更加高效。

1. 創(chuàng)建deque對(duì)象

可以通過(guò)引入collections庫(kù)并調(diào)用deque類來(lái)創(chuàng)建deque對(duì)象??梢栽趧?chuàng)建時(shí)指定初始元素。示例代碼:

from collections import deque

# 創(chuàng)建空的deque對(duì)象
d = deque()

# 創(chuàng)建帶有初始元素的deque對(duì)象
d = deque([1, 2, 3])

2. 基本操作

deque對(duì)象支持類似列表的基本操作,如索引、切片、追加、插入、刪除等。示例代碼如下:

from collections import deque

# 創(chuàng)建一個(gè)deque對(duì)象
d3 = deque([1, 2, 3, 4, 5])

# 訪問(wèn)元素
print(d3[0])  # 輸出第一個(gè)元素
# 1

(1)追加元素到隊(duì)尾:

d3.append(6)
print(d3)

deque([1, 2, 3, 4, 5, 6])

(2)追加元素到隊(duì)首:

d3.appendleft(0)
print(d3)

deque([0, 1, 2, 3, 4, 5, 6])

(3)彈出隊(duì)尾元素

d3.pop()
print(d3)
d3.pop()
print(d3)

deque([0, 1, 2, 3, 4, 5])

(4)彈出隊(duì)首元素

d3.popleft()
print(d3)

deque([1, 2, 3, 4, 5])

(5)在指定位置插入元素

d3.insert(2, 100)
print(d3)

deque([1, 2, 100, 3, 4, 5])

(6)移除指定元素

d3.remove(3)
print(d3)

deque([1, 2, 100, 4, 5])

3. 旋轉(zhuǎn)操作

deque對(duì)象可以進(jìn)行旋轉(zhuǎn)操作,可以將隊(duì)尾的元素移動(dòng)到隊(duì)首或者將隊(duì)首的元素移動(dòng)到隊(duì)尾。示例代碼:

from collections import deque

# 創(chuàng)建一個(gè)deque對(duì)象

d = deque([1, 2, 3, 4, 5])

# 旋轉(zhuǎn)操作,將隊(duì)尾元素移動(dòng)到隊(duì)首

d.rotate(1)
print(d)

# 旋轉(zhuǎn)操作,將隊(duì)首元素移動(dòng)到隊(duì)尾

d.rotate(-1)
print(d)


# deque([5, 1, 2, 3, 4])
# deque([1, 2, 3, 4, 5])

4. 手動(dòng)實(shí)現(xiàn)一個(gè)雙端隊(duì)列

可以自己對(duì)deque進(jìn)行封裝,實(shí)現(xiàn)一個(gè)隊(duì)列,如下所示:

from collections import deque


class MyQueue:
    """
    使用 collections.deque 可以迅速實(shí)現(xiàn)一個(gè)隊(duì)列
    """

    def __init__(self):
        self.items = deque()

    def append(self, val):
        return self.items.append(val)

    def pop(self):
        return self.items.popleft()

    def __len__(self):
        return len(self.items)

    def empty(self):
        return len(self.items) == 0

    def front(self):
        return self.items[0]

通過(guò)以上示例代碼,我們可以看到deque類的基本操作和使用方法。deque對(duì)象可以高效地進(jìn)行隊(duì)首和隊(duì)尾的插入和刪除操作,是處理隊(duì)列數(shù)據(jù)的理想選擇。你可以根據(jù)具體的需求和場(chǎng)景調(diào)整和擴(kuò)展這些示例代碼,以便更好地應(yīng)用deque類的強(qiáng)大功能。

總結(jié)

通過(guò)本文的探索與示例,讀者可以更好地理解和掌握collections庫(kù)中Counter和defaultdict類的使用方法。這些強(qiáng)大的工具類可以極大地提高編程過(guò)程的效率,并為處理計(jì)數(shù)、統(tǒng)計(jì)和字典操作提供便利。希望本文能夠給讀者帶來(lái)啟發(fā),并激發(fā)更多關(guān)于collections庫(kù)的學(xué)習(xí)與實(shí)踐。

責(zé)任編輯:趙寧寧 來(lái)源: python學(xué)習(xí)之旅
相關(guān)推薦

2020-11-11 08:24:06

collection

2016-10-31 10:25:24

2024-06-06 09:23:11

2023-10-27 08:59:00

網(wǎng)絡(luò)wiresharkIO

2023-06-06 08:25:31

SQLAlchemy數(shù)據(jù)庫(kù)

2011-05-17 13:43:23

Oracle數(shù)據(jù)庫(kù)

2024-02-22 10:14:40

Filter函數(shù)Python

2009-08-15 10:24:48

2017-03-10 10:16:37

PythonRequests庫(kù)

2024-01-22 00:03:00

VS Code編碼開(kāi)發(fā)

2021-10-07 09:04:49

Collections數(shù)據(jù)結(jié)構(gòu)

2025-03-26 08:43:17

2022-03-22 06:33:49

Python內(nèi)置模塊函數(shù)

2024-12-16 16:40:07

Python命令操作系統(tǒng)

2010-03-26 13:39:28

Python標(biāo)準(zhǔn)庫(kù)

2023-11-29 08:31:20

PythonRust

2022-06-29 08:55:46

orjsonPythonJSON

2024-09-05 10:49:42

2024-08-02 11:33:49

2020-03-06 10:05:59

前端Javascript代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)