本文是對在內(nèi)置庫中功能很獨(dú)特的函數(shù)的介紹和記載
Python官方文檔
Random庫
import random
-
uniform
隨機(jī)生成范圍內(nèi)的浮點(diǎn)數(shù)
result = random.uniform(1,3)
print("result: ",result) #1.1828549344931325
itertools庫
import itertools
-
pairwise
pairwise是python3.10
版本中才有的七嫌,在3.10之前都是以tee為原型,該函數(shù)可以提取出一個數(shù)組中相鄰一組位置的元素,該函數(shù)適用于當(dāng)目標(biāo)列表需要生成時使用,可節(jié)省許多迭代步驟中的代碼從而大大提高效率
def pairwise(iterable):
a, b = itertools.tee(iterable)
next(b, None)
return zip(a, b)
# pairwise('ABCDEFG') --> AB BC CD DE EF FG
collections庫
import collections
-
Counter
defaultdict
是內(nèi)置dict
類的子類,用于計數(shù)可哈希對象卵贱。它是一個集合,元素像字典鍵(key)一樣存儲,它們的計數(shù)存儲為值
cnt = collections.Counter()
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
cnt[word] += 1
print(cnt)
# Counter({'blue': 3, 'red': 2, 'green': 1})
-
defaultdict
defaultdict
是內(nèi)置dict
類的子類,和dict不同的是當(dāng)每個鍵第一次遇見時敷燎,它還沒有在字典里面,所以自動創(chuàng)建該條目箩言,即調(diào)用default_factory
方法硬贯,返回一個空的list
,如果使用普通的dict
方法則會產(chǎn)生KeyError
的錯誤陨收,代碼參考如下
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = collections.defaultdict(list) # if use dict will make a Error
for k, v in s:
d[k].append(v)
sorted(d.items())
#[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
經(jīng)常使用的還是設(shè)置 default_factory
為 set
使 defaultdict
用于構(gòu)建 set 集合
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = collections.defaultdict(set)
for k, v in s:
d[k].add(v)
sorted(d.items())
# [('blue', {2, 4}), ('red', {1, 3})]
當(dāng)然也可以設(shè)置 default_factory
為 int
饭豹,使 defaultdict
用于計數(shù)
s = 'mississippi'
d = collections.defaultdict(int)
for k in s:
d[k] += 1
sorted(d.items())
# [('i', 4), ('m', 1), ('p', 2), ('s', 4)]