1. Counter的創建和基本用法
from collections import Counter
# 傳串列創建:統計大家的出生年份分布情況
a = Counter([1991, 1993, 1992, 1992, 1993, 1993])
# 傳字串創建:統計選擇題選項分布情況
b = Counter('AADCABDDAC')
print('a:', a)
print('b:', b)
print('a的前二名:', a.most_common(2))
# elements()從Counter物件恢復元素串列情況
# 注意:不包括元素計數小于等于0的元素
print('b中的元素串列:', list(b.elements()))
# values()回傳各元素的計數/值串列
print('b中的元素值串列:', b.values(), '合計:', sum(b.values()))
a: Counter({1993: 3, 1992: 2, 1991: 1})
b: Counter({'A': 4, 'D': 3, 'C': 2, 'B': 1})
a的前二名: [(1993, 3), (1992, 2)]
b中的元素串列: ['A', 'A', 'A', 'A', 'D', 'D', 'D', 'C', 'C', 'B']
b中的元素值串列: dict_values([4, 3, 2, 1]) 合計: 10
2. “+”、“-”、“&”、“|”運算
# 傳鍵值對創建:對坐標空間分布進行計算
a = Counter(X=3, Y=2, Z=1)
b = Counter(X=4, Y=-3)
print('a: ', a)
print('b: ', b)
# 求和:會排除結果小于等于0的元素,
print('a + b:', a + b)
# 求差:會排除結果小于等于0的元素,
print('a - b:', a - b)
# 求交集:回傳兩者共性元素的最小值(不包括小于等于0的元素)
print('a & b:', a & b)
# 求并集:回傳全部元素的最大值(不包括小于等于0的元素)
print('a | b:', a | b)
a: Counter({'X': 3, 'Y': 2, 'Z': 1})
b: Counter({'X': 4, 'Y': -3})
a + b: Counter({'X': 7, 'Z': 1})
a - b: Counter({'Y': 5, 'Z': 1})
a & b: Counter({'X': 3})
a | b: Counter({'X': 4, 'Y': 2, 'Z': 1})
3.1 “+”與“update”的區別
a = Counter(X=3, Y=2, Z=1)
b = Counter(X=4, Y=-3)
print('a: ', a)
print('b: ', b)
# 會排除結果小于等于0的元素,
print('a + b: ', a + b)
# 直接對a進行修改,求得的“和”包含小于等于0的元素
a.update(b)
print('update:', a)
a: Counter({'X': 3, 'Y': 2, 'Z': 1})
b: Counter({'X': 4, 'Y': -3})
a + b: Counter({'X': 7, 'Z': 1})
update: Counter({'X': 7, 'Z': 1, 'Y': -1})
3.2 “-”與“subtract”的區別
a = Counter(X=3, Y=2, Z=1)
b = Counter(X=4, Y=-3)
print('a: ', a)
print('b: ', b)
# 會排除結果小于等于0的元素,
print('a - b: ', a - b)
# 直接對a進行修改,求得的“差”包含小于等于0的元素
a.subtract(b)
print('subtract:', a)
a: Counter({'X': 3, 'Y': 2, 'Z': 1})
b: Counter({'X': 4, 'Y': -3})
a - b: Counter({'Y': 5, 'Z': 1})
subtract: Counter({'Y': 5, 'Z': 1, 'X': -1})
3.3 一個小技巧
a = Counter(X=0, Y=1, Z=-1)
# 快速除去Counter物件中值小于等于0的元素
a += Counter() # 或 a -= Counter()
print('a:', a)
a: Counter({'Y': 1})
總結:對串列、元組、字典、字串等可迭代物件中的元素進行統計、計算時,千萬別忘了Counter,使用起來非常方便、高效!
還記得那年在樹下的軍訓嗎?教官說:第一排報數,你驚訝地看著教官,教官又大聲說了一遍:報數!于是,你極不情愿地轉過身去抱住了樹!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/234256.html
標籤:python
下一篇:A*演算法解N數碼問題
