為計數而生 - Python Counter 類別
Python collections 模組提供多個方便的類別(class)供開發者利用,其中 Counter 類別(dict 的子類別)可以應用在計數(counting)相關的場景:
本文將介紹 Counter 類別的使用方式,並比較其與 dict 與 defaultdict 之間的效能差異。
Posted on Apr 19, 2022 in Python 程式設計 - 初階 by Amo Chen ‐ 3 min read
Python collections 模組提供多個方便的類別(class)供開發者利用,其中 Counter 類別(dict 的子類別)可以應用在計數(counting)相關的場景:
本文將介紹 Counter 類別的使用方式,並比較其與 dict 與 defaultdict 之間的效能差異。
Posted on Apr 19, 2022 in Python 程式設計 - 初階 by Amo Chen ‐ 3 min read
談到插入(insert)元素到已排序串列(list) ,最暴力的方法就是每次插入元素後直接排序:
>>> a = [1, 2, 3, 4]
>>> a.insert(0, 5)
>>> a
[5, 1, 2, 3, 4]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]
不過隨著串列越來越長,每次插入元素後再進行排序的方式,將會越來越慢,甚至造成大量不必要的運算,這時可以利用 Python 內建模組 bisect ,透過二元搜尋的方式幫我們插入元素到串列之中,如此一來該串列就不需要在新增元素後進行排序。
p.s bisect 只能運用在已排序過的串列(list)
Posted on Feb 7, 2021 in Python 程式設計 - 初階 by Amo Chen ‐ 3 min read
近來查閱 Python 關於 datetime 的標準日期格式(datetime.isoformat)的時候,發現一個奇妙的行為,該行為可能造成日期格式不一致。
Posted on Dec 10, 2020 in Python 程式設計 - 初階 by Amo Chen ‐ 1 min read
Python 的 os 模組提供不少便利的功能讓我們能夠操作檔案/資料夾的路徑、操作等等。直到 Python 3.4 之後提供一個新模組 pathlib,將各種檔案/資料夾相關的操作封裝在 Path 等類別之中,讓檔案/資料夾的操作更加物件導向。
本文將說明與展示 pathlib 模組。
Posted on Oct 19, 2020 in Python 程式設計 - 初階 by Amo Chen ‐ 3 min read
Python 其實內建許多好用的模組,如果運用得當,不僅節省開發時間,還能讓程式碼看起來更加簡潔。
itertools 就屬於內建好用的模組之一,該模組提供不少讓我們能夠方便地處理 iterable (例如 dict, list, tuple, str 等類型的資料),譬如環型走訪、分類群組(group by)、乘積(product)等等。
如果 itertools 內建的函式還不夠的話,還可以安裝 more-itertools 。 more-itertools 提供更多額外的函式可供利用。
本篇將介紹幾種 itertools/more-itertools 中簡單易用的函式,提供除了自己動手實作之外的方法,不僅能夠節省重複開發輪子的時間,也能夠讓程式看起來更加優雅、簡潔。
Posted on Aug 9, 2020 in Python 程式設計 - 初階 , Python 模組/套件推薦 by Amo Chen ‐ 4 min read
Python 內建的 multiprocessing 是相當重要的模組,如果有平行(parallelism)處理的需求,除了內建的 threading 模組之外,另一個就屬 multiprocessing 。
使用 multiprocessing 的好處在於能夠很大程度避開 Python GIL 對於程式效能的影響,但壞處則是對於記憶體的耗用程度也較高,即便如此也是一個必須了解的模組。
本篇將實際透過幾個範例學習如何使用 multiprocessing 模組。
Last updated on Aug 8, 2023 in Python 程式設計 - 初階 by Amo Chen ‐ 5 min read
Python 近 10 年來一直在演進,因此 Python 專案的開發也需要考慮版本的問題。
特別是 Python 2 已經退休了,而現在的 Python 專案都以 Python 3 為主,然而有些公司內部的老舊專案仍以 Python 2 開發,因此開發者必須在 Python 2 與 3 之間進行切換。
如果你有 Python 版本切換上的困擾,那麼 pyenv 會是你的好朋友!
Last updated on Mar 13, 2023 in Python 程式設計 - 初階 , Python 模組/套件推薦 by Amo Chen ‐ 2 min read
最近在看 Elastic APM agent for Python 的原始碼時,看到該專案的開發者有使用 atexit 模組,在 APM agent 關閉前先關閉 metrics collect timer 。
由於對 atexit
不甚熟悉,因此特以此文研究一番。
Posted on Sep 21, 2019 in Python 程式設計 - 初階 by Amo Chen ‐ 2 min read