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

Python編程:集合工具類之計數器(Counter)詳解與實踐

開發 開發工具
本篇文章主要介紹了Python內置集合模塊的工具類Counter的使用,并結合代碼和描述,以期深入淺出的幫助你更好的理解和掌握Counter相關內容和應用。

前言

本文繼續來盤Python內置集合模塊,這期主要介紹其中的工具類計數器類(Counter)類的使用。我們還是采用“短平快”的模式——文字+代碼,助你多快好省的學會它,并能都收用上它。閑話少敘,開始正文——

 Counter

Counter是一個dict子類,用于計數可哈希對象。它是一個集合,其中元素被存儲為字典鍵,它們的計數值被存儲為字典值。計數值可為任何整數值,包括零或負計數。Counter類類似于其他語言中的包或多集。

計數的元素來自可迭代對象或另一個初始化的映射(或計數器)。下面是Python中創建Counter對象的一些方式。請看示例代碼:

from collections import Counter

# 創建一個空的Counter對象
c1 = Counter()
print(c1)

# 從可迭代對象創建新的Counter對象
c2 = Counter('aabbbcddeeee')
print(c2)

# 從映射創建新的的Counter對象
c3 = Counter({'orange': 6, 'red': 3, 'green': 5})
print(c3)

# 從關鍵字參數創建Counter對象
c4 = Counter(cats=4, dogs=8)
print(c4)

程序運行結果如下所示:

Counter()
Counter({'e': 4, 'b': 3, 'a': 2, 'd': 2, 'c': 1})
Counter({'orange': 6, 'green': 5, 'red': 3})
Counter({'dogs': 8, 'cats': 4})

Counter對象有一個字典接口,只是它們會為丟失的項返回一個零計數,而不是引發KeyError,示例如下:

# 存在元素計算
c5 = Counter(['eggs', 'ham', 'jar ', 'ham'])
print(c5['ham'])

# 缺失元素計數為0
print(c5['bacon'])

輸出結果如下:

2
0

從Counter中刪除元素

要從Counter中刪除元素,可以使用del關鍵字。請記住,將計數設置為零并不會從計數器中刪除一個元素。請看示例代碼:

# –從Counter對象刪除元素 – #
# 0計數的counter條目項
c5['sausage'] = 0
print(c5)

# del 實際刪除條目項
del c5['sausage']
print(c5)

輸出結果為:

Counter({'ham': 2, 'eggs': 1, 'jar ': 1, 'sausage': 0})
Counter({'ham': 2, 'eggs': 1, 'jar ': 1})

如代碼所示,我們將0設置為計數器中不存在的項。Python將該項以零值添加到Counter中。在第7行中,我們使用del關鍵字完全刪除該項。很明顯,計數為0,并不會刪除Counter中的計數項,而要刪除之,得用del命令才行。

Counter方法

Counter對象除了支持所有字典可用的方法之外,以下是其特有最常見方法:返回一個迭

1)elements():

返回迭代器,其為重復相應元素次數與其計數值相等的迭代器。按第一次遇到的順序返回元素。如果一個元素的計數小于1,elements()將忽略它。示例如下:

# – Counter 對象方法 – #
# elements()
counter = Counter(a=1, b=2, c=0, d=-2, e=4)
sorted_elements = sorted(counter.elements())
print(sorted_elements)

輸出結果為:

['a', 'b', 'b', 'e', 'e', 'e', 'e']

2)most_common([n]):

返回n個最常見元素的列表,元素的計數大小從最大到最小。如果省略n或None, most_common()將返回計數器中的所有元素。計數相等的元素按第一次遇到的順序排列:

# 2)most_common()
most_common_3 = Counter('abracadabrae').most_common(3)
print(most_common_3)

輸出結果為:

[('a', 5), ('b', 2), ('r', 2)]

3)subtract([iterable-or-mapping]):

從可迭代對象或另一個映射(或計數器)中減去元素。像dict.update(),但是減去計數而不是替換它們。輸入和輸出都可能是零或負的。示例如下:

# 3)subtract()
c_1 = Counter(a=4, b=2, c=0, d=-2)
c_2 = Counter(a=1, b=2, c=3, d=4)
c_1.subtract(c_2)
print(c_1)

輸出結果如下:

[('a', 5), ('b', 2), ('r', 2)]

4)兩個方法

通常的字典方法可用于Counter對象,但有兩個方法針對計數器的工作方式不同:

fromkeys(iterable):

這個類方法Counter對象沒實現。

update([iterable-or-mapping]):

從可迭代對象中計數元素,或從另一個映射(或計數器)中添加元素。類似dict.update(),但Counter是增加計數而不是替換它們。而且,迭代對象應該是元素序列,而不是(鍵,值)對的序列。示例如下:

# 4)update()
d = Counter(a=3, b=1)
d.update({'a': 5, 'c': 4})
print(d)
d.update('aBac')
print(d)
d.update(dict([('a',10),('e',9)]))
print(d)
#但不要這樣:
d.update([('a',10),('e',9)])
print(d)

請注意下面的輸出結果:

Counter({'a': 8, 'c': 4, 'b': 1})

Counter({'a': 10, 'c': 5, 'b': 1, 'B': 1})

Counter({'a': 20, 'e': 9, 'c': 5, 'b': 1, 'B': 1})

Counter({'a': 20, 'e': 9, 'c': 5, 'b': 1, 'B': 1, ('a', 10): 1, ('e', 9): 1})

1.1.1 數學式操作

Counter提供了幾種數學操作來組合Counter對象運算,以生成多集(計數大于零的計數器)。加減法通過加減相應元素的計數來合并計數器。交集和并集返回對應計數的最小值和最大值。每個操作都可以接受帶符號計數值的輸入,但輸出將排除計數為零或更少的結果。

c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
print(c + d)
print(c - d)
print(c & d)
print(c | d )

輸出結果類似如下:

Counter({'a': 4, 'b': 3})
Counter({'a': 2})
Counter({'a': 1, 'b': 1})
Counter({'a': 3, 'b': 2})

一元加減法是與空計數器相加或與空計數器相減的快捷方式。示例如下:

#一元加減
c = Counter(a=2, b=-4)
print(+c)# 一元加
print(-c)# 一元減

輸出結果如下:

Counter({'a': 2})
Counter({'b': 4})

簡而言之,可利用Counter對象實現一些相關數據的統計分析。

本文小結

本篇文章主要介紹了Python內置集合模塊的工具類Counter的使用,并結合代碼和描述,以期深入淺出的幫助你更好的理解和掌握Counter相關內容和應用。若是初學者,記得一定要動手實踐一把才是最佳學習模式。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2024-02-07 12:32:00

重構技巧PythonCounter

2023-08-08 08:01:22

微服務架構服務

2009-11-06 16:59:26

WCF性能計數器

2023-07-28 08:15:27

PC程序計數器

2025-02-10 07:40:00

Java集合工具類編程

2022-11-01 09:56:52

Python集合工具類

2024-03-26 07:30:07

Java虛擬機源文件

2010-02-22 16:34:17

WCF性能計數器

2009-10-29 11:47:15

ADO.NET計數器b

2009-12-22 13:16:53

WCF性能計數器

2022-04-08 07:22:15

分布式計數器系統設計

2009-11-25 15:07:39

PHP添加計數器

2009-12-22 13:25:58

WCF性能計數器內存

2009-06-11 16:27:18

科學型Java計數器

2023-01-09 08:42:04

String數據類型

2010-01-04 16:02:32

ADO.NET計數器

2009-12-01 15:01:07

PHP生成訪問計數器

2015-03-24 13:46:29

C++多線程計數器特性實現

2010-01-18 11:03:17

VB.NET網頁計數器

2024-03-04 08:53:50

海量數據計數器存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久777777 | 国产美女永久免费无遮挡 | 国产又色又爽又黄又免费 | 91精品久久久久久久久中文字幕 | 久久国产综合 | 91麻豆精品国产91久久久久久 | av在线免费网 | 午夜小电影 | 亚洲视频一区二区三区 | 999热视频 | 欧美日韩在线观看一区 | 国产成人艳妇aa视频在线 | 精品国产乱码久久久久久牛牛 | 亚洲 自拍 另类 欧美 丝袜 | 四虎在线观看 | 亚洲高清视频在线观看 | 久久久久久久久毛片 | 一区视频 | 午夜资源 | 日韩精品在线观看一区二区 | 不卡的av电影 | 精品久久一区二区 | 天天色天天色 | 国产99视频精品免视看9 | 日本精品一区二区三区在线观看 | 精品国产欧美日韩不卡在线观看 | 美女逼网站 | 国产福利资源在线 | 久草视频在 | 成年人网站在线观看视频 | 亚洲美女视频 | 午夜影院在线观看 | 欧美日韩国产精品一区二区 | 色吊丝在线 | 日韩一区二区不卡 | 日韩成人在线看 | 国内精品视频在线观看 | 色在线看 | 999免费观看视频 | 中文字幕国产视频 | 免费成人在线网 |