小小步邁向 Pythonic (1) - 利用長字串分割以製造字串清單
我這個人一直有點完美主義,導致拖延症成為萬年宿疾,雖然對於寫作和教學有著極強烈的慾望,但是老是為了我沒辦法把事情說得很完整、很完美而苦腦,我決定要克服這些問題,最好的方式就是讓自己不要想那麼多,開始寫就對了,那究竟要寫些什麼呢?為了防止大主題成為持續的絆腳石,我決定開始這個 小小步邁向 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),如果你不相信的話,可以自己動手用兩種方式打一次代碼看看,你就會明白我的意思了(笑)。