成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python進階:解密collections庫的高級功能

開發(fā) 前端
本文主要介紹的Counter和defaultdict類還有雙端隊列deque的意義和用途,這幾個類比較常見,可以來詳細剖析一下。

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

一、常見類的介紹

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

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

本文主要介紹的Counter和defaultdict類還有雙端隊列deque的意義和用途,這幾個類比較常見,可以來詳細剖析一下。

二、Counter類的使用

1. Counter類的定義和功能說明

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

2. 統(tǒng)計列表或字符串中元素的出現(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é)果:是一個類似字典的一個對象
# 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. 合并多個Counter對象

示例代碼:

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對象

示例代碼:

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)]

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

三、defaultdict類的使用

1. defaultdict類的定義和特點

defaultdict是collections庫中的一個字典子類,它是用來創(chuàng)建具有默認值的字典。與普通字典不同,當我們訪問一個不存在的鍵時,defaultdict會自動為該鍵分配一個默認值。

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

示例代碼:

from collections import defaultdict

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

d = defaultdict(int)

# 訪問一個不存在的鍵,則會自動分配默認值0

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

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

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

示例代碼:

from collections import defaultdict

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

d = defaultdict(lambda: "Undefined")

# 訪問一個不存在的鍵,則會自動分配默認值"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)建一個defaultdict,將每個字母作為鍵,對應(yīng)的值為一個列表

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]})

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

四、deque類的詳細使用

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

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

可以通過引入collections庫并調(diào)用deque類來創(chuàng)建deque對象。可以在創(chuàng)建時指定初始元素。示例代碼:

from collections import deque

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

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

2. 基本操作

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

from collections import deque

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

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

(1)追加元素到隊尾:

d3.append(6)
print(d3)

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

(2)追加元素到隊首:

d3.appendleft(0)
print(d3)

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

(3)彈出隊尾元素

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

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

(4)彈出隊首元素

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對象可以進行旋轉(zhuǎn)操作,可以將隊尾的元素移動到隊首或者將隊首的元素移動到隊尾。示例代碼:

from collections import deque

# 創(chuàng)建一個deque對象

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

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

d.rotate(1)
print(d)

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

d.rotate(-1)
print(d)


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

4. 手動實現(xiàn)一個雙端隊列

可以自己對deque進行封裝,實現(xiàn)一個隊列,如下所示:

from collections import deque


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

    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]

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

總結(jié)

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

責任編輯:趙寧寧 來源: python學習之旅
相關(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ù)庫

2011-05-17 13:43:23

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

2024-02-22 10:14:40

Filter函數(shù)Python

2009-08-15 10:24:48

2017-03-10 10:16:37

PythonRequests庫

2024-01-22 00:03:00

VS Code編碼開發(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標準庫

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代碼
點贊
收藏

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

主站蜘蛛池模板: 中文字幕 国产精品 | 欧美一级淫片免费视频黄 | 国产激情亚洲 | 久久久久电影 | 欧美五月婷婷 | 欧美高清hd| 日韩欧美一区二区三区免费观看 | 九九热在线观看 | 国产精品久久亚洲 | 欧美一区二区三区在线观看 | 国产精品99久久久久久久久 | 亚洲欧美另类在线 | 91国内视频在线 | 亚洲中国字幕 | 综合一区二区三区 | 亚洲色片网站 | 香蕉视频一区二区 | 日韩视频在线免费观看 | 国产精品九九 | 天天影视亚洲综合网 | 亚洲最色网站 | 国产清纯白嫩初高生在线播放视频 | 国产精品久久国产精品 | 免费精品视频一区 | 欧美一级欧美一级在线播放 | 亚洲91精品 | 日韩在线看片 | 青草青草久热精品视频在线观看 | 久久精品久久久久久 | 日韩国产黄色片 | 亚洲国产一区二区视频 | 日韩精品在线网站 | 国产日韩一区二区三区 | 国内精品久久久久久久 | 亚洲午夜精品 | 成人av一区二区三区 | 欧美亚洲国语精品一区二区 | 欧美视频精品 | 国产91久久精品一区二区 | 日韩精品视频中文字幕 | 高清一区二区 |