Python 程式設計 - 初階

Python 模組介紹 - bisect

談到插入(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 好用模組 - pathlib

Python 的 os 模組提供不少便利的功能讓我們能夠操作檔案/資料夾的路徑、操作等等。直到 Python 3.4 之後提供一個新模組 pathlib,將各種檔案/資料夾相關的操作封裝在 Path 等類別之中,讓檔案/資料夾的操作更加物件導向。

本文將說明與展示 pathlib 模組。

Posted on  Oct 19, 2020  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 3 min read

Python 模組/套件推薦 - itertools & more-itertools

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 模組

Python 內建的 multiprocessing 是相當重要的模組,如果有平行(parallelism)處理的需求,除了內建的 threading 模組之外,另一個就屬 multiprocessing 。

使用 multiprocessing 的好處在於能夠很大程度避開 Python GIL 對於程式效能的影響,但壞處則是對於記憶體的耗用程度也較高,即便如此也是一個必須了解的模組。

本篇將實際透過幾個範例學習如何使用 multiprocessing 模組。

Last updated on  Aug 8, 2023  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 5 min read

Python 版本管理的好工具 - pyenv

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