python中高效刷題的擴(kuò)展包

更多精彩內(nèi)容,請關(guān)注【力扣簡單題】。

計(jì)數(shù)器

如果我們想統(tǒng)計(jì)列表或字符串中每個(gè)元素出現(xiàn)的次數(shù),我們可以這樣做:

def counter(l):
    count_dict = {}
    for e in l:
        if e in count_dict.keys():
            count_dict[e] += 1
        else:
            count_dict[e] = 1
    return count_dict

s = "apple"
c = counter(s)
print(c)
# {'a': 1, 'p': 2, 'l': 1, 'e': 1}

如果我們使用collection模塊中的Counter,就可以快速進(jìn)行統(tǒng)計(jì):

from collections import Counter
s = "apple"
c = Counter(s)
print(c)
# Counter({'p': 2, 'a': 1, 'l': 1, 'e': 1})

列表也是可以統(tǒng)計(jì)的。

生成的Counter類可以看做一個(gè)字典,相當(dāng)于字典的繼承,支持加減操作,例如:

l1 = [7, 7, 7, 7, 8, 8, 8]
l2 = [7, 7, 7, 8, 8, 8, 8, 9]
c1, c2 = Counter(l1), Counter(l2)
print(c1+c2)
# Counter({7: 7, 8: 7, 9: 1})
print(c1-c2)
# Counter({7: 1})

排列組合

一個(gè)箱子里有寫著1, 2, 3, 4的四張卡片,從中任意抽兩張:

  1. 不考慮先后順序,求所有可能的組合,需要使用combinations;

  2. 考慮先后順序,且無放回的抽取,需要使用permutations;

  3. 考慮先后順序,且有放回的抽取,需要使用product;

實(shí)驗(yàn)效果:

 from itertools import product, combinations, permutations
nums = [1, 2, 3, 4]
c = combinations(nums, r=2)
a = permutations(nums, r=2)
p = product(nums, repeat=2)
print(list(c))
# [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
print(list(a))
# [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
print(list(p))
# [(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4, 3), (4, 4)]

數(shù)學(xué)計(jì)算

有時(shí)候,我們需要用到數(shù)學(xué)計(jì)算包,例如計(jì)算平方,對數(shù)等情況,數(shù)學(xué)計(jì)算包可以大大提高我們的編程效率。

from math import log, sqrt, pow
print(log(16, 2))
# 4
print(sqrt(2))
# 1.4142135623730951
print(pow(2, 6))
# 64.0

二分查找

幫助我們使用二分查找法快速定位元素在排序數(shù)組中的位置,或應(yīng)該插入排序數(shù)組的位置。

import bisect
print(bisect.bisect_left([1, 2, 3, 4, 5], 2))
# 1
print(bisect.bisect_left([1, 2, 3, 4, 5], 3.5))
# 3
print(bisect.bisect_right([1, 2, 3, 4, 5], 3.5))
# 4
print(bisect.bisect_left([1, 2, 3, 4, 5], 5.5))
# 5
print(bisect.bisect_right([1, 2, 3, 4, 5], 5.5))
# 5
l = [1, 2, 3, 4, 5]
l.insert(bisect.bisect(l, 3.3), 3.3)
print(l)
# [1, 2, 3, 3.3, 4, 5]

靈活使用上述擴(kuò)展包,會(huì)使我們的編碼變得高效。

如有疑問或建議,歡迎評論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 6,356評論 0 10
  • 今天任務(wù)被卡住了,有事只能到明天完成,所以能夠按時(shí)下班。在樓梯遇到HR姐姐,跟她聊了一下,說到我們組的加班問題???..
    UncleRiver閱讀 232評論 0 1
  • 七絕 初冬山居見聞 雨打幽篁雀鳥驚, 流溪澗石撥瑤箏。 臨川遙看云深處, 禪院依稀撞磬聲。
    川伸閱讀 288評論 2 7
  • 2019年3月21日 春分至,晝夜平分暖意濃。 可我這里卻下雨了。 寄完給你們寫好的明信片,長舒了一口氣,像是完成...
    冰香oL閱讀 512評論 3 2
  • 6月24日,中國廣告協(xié)會(huì)第一次組團(tuán)參加第43屆戛納國際廣告節(jié)。 中國報(bào)協(xié)廣告委員會(huì)三屆一次會(huì)議通過《中國報(bào)紙廣告行...
    許文超閱讀 677評論 0 0

友情鏈接更多精彩內(nèi)容