小小步邁向 Pythonic (1) - 利用長字串分割以製造字串清單


pythonic-tips.png

我這個人一直有點完美主義,導致拖延症成為萬年宿疾,雖然對於寫作和教學有著極強烈的慾望,但是老是為了我沒辦法把事情說得很完整、很完美而苦腦,我決定要克服這些問題,最好的方式就是讓自己不要想那麼多,開始寫就對了,那究竟要寫些什麼呢?為了防止大主題成為持續的絆腳石,我決定開始這個 小小步邁向 Pythonic 的系列。

目前的打算是,讓這個系列收錄我這些年領悟到的一些 Pythonic 技巧,這些技巧彼此之間都會非常獨立,也非常零碎,同時也會非常單純,這種零散的狀態可以讓我比較沒有顧慮地隨意揮灑,算是讓自己養成持續寫作的習慣,不過大家可能也要忍受一下這個系列的無序和過度自由,同時,每篇文章的長短、深度和廣度可能都會不同,甚至差異很大。

這些文章中可能包含了很多我個人的看法,你可能有很多的不認同,這是正常現象!許多時候我們對於 code 的美感和認知並不相同,當然也可能是目前我的見識不夠,所以請大家一定要保持獨立思考的精神,去選擇你覺得有幫助的作法來邁向 Pythonic!當然也歡迎大家留言告訴我更好的作法。

總之,讓我們一起前進吧。


製造一個 字串清單 是一件累人的事情,尤其是在字串數量龐大的時候,因為我們必須得鍵入大量的引號和逗號。

下面的 names 就是一個不短的人名清單(list):

names = ['Bill', 'dokelung', 'Cynthia', 'Lydia', 'Arton', 'Steven', 'Sophie']

其實這個做法很一般,也沒有什麼不好的地方(基本上這個做法完全沒得挑惕),真要說有什麼比較令人遺憾的地方,還真的是太多的引號和逗號要打了。如果這個清單長度再更長些,這行代碼會拖得更長,甚至得換行,這時候 引號逗號 也會出現東漏西漏的問題了。

也許我們可以考慮下面這種做法:

names = 'Bill dokelung Cynthia Lydia Arton Steven Sophie'.split()

你可能會非常訝異這種看起來花拳繡腿、多此一舉的作法,當初我在 Fluent Python 中,看到 Luciano 大神利用這個方法產生字串清單的時候,一時間也不太能接受。

其實這個方法我覺得滿不賴的,因為一般直接利用 字串字面 生成字串的方法,會讓我們必須重複鍵入許多個 引號逗號,這不但麻煩,還容易出錯。這種先製造一個包含所有子字串的長字串,再利用 split 函式切割的方法,能讓我們使用更少的符號,也微幅降低了出錯的機率。

當然,更重要的是,我能在寫 code 的時候寫的更順手更開心(講直白一點就是:我是個懶鬼XD),如果你不相信的話,可以自己動手用兩種方式打一次代碼看看,你就會明白我的意思了(笑)。


參考資料

カウンター
About Me

dokelung

dokelung

Hi, my name is Ko-Lung Yuan!

你好,我是袁克倫,你可以叫我 dokelung,我是一名小小軟體工程師,專長是電子設計自動化。 愛學習也愛分享,寫書來推廣熱愛的知識一直是我的夢想。 本應與 C++ 共度一生,卻意外成為 Python 的終極狂熱者,幾乎生活上的大小事都想用 Python 解決(可惜吃飯和上廁所不行),酷愛有關於 Python 的一切。

More About Me...


Contacts

book

It's django

It's django

A book about python web framework Django

Where to buy it?

book

Python 快速入門

Python 快速入門

適合初學者的 Python 快速入門

Read it!