學習的技巧

更新於 發佈於 閱讀時間約 6 分鐘

在學習新事物的時候,如果能善用類比、聯想等小技巧,往往能事半功倍,但也是有可能會碰壁的。

就以「橫的」和「直的」來說,在很多不同的領域,都有這樣概念的東東。例如,GPS定位的「經緯度」、排隊、列隊的「行、列」、英文的「column、row」。那這些不同的字詞中,哪個指的是「橫的」,哪個指的是「直的」?要好好區分並記住這些,還真是挺傷腦筋的,往往今天搞清楚記得了,過沒兩天又搞混了。最後還是靠一點類比、聯想的小技巧,才能不再搞混。

「經緯度」中的經、緯兩個字,本來指的是織物中南北向的直線,以及東西向的橫線。那哪個字指的是南北向的直線呢?台灣人很喜歡去日本旅遊,日本的首都一般都說是「東京」(其實日本沒有正式的首都啦!)。所以囉!在經緯度中,有「東經」,沒有「東緯」。既然是「東」經,那當然是直的囉,只有一條條的直線,才能讓人區分出東、西不同的地點嘛!畫一下圖就知道了。

那英文的column和row呢?這個最好認了,column裡頭,那根直挺挺杵在那兒的英文字母「l」,不就是在告訴你:直的!直的!我是直的!

至於「行列」,那可就讓人頭大了,因為大家都隨便用、混著用。有時候隨便用、混著用還不至於引起誤會,而產生什麼大問題,但有時候可是會出大麻煩的。例如中文書有直的和橫的兩種印刷方式,但不管是哪一種印刷方式,我們都會用「第幾頁第幾行」這樣的說法。這樣子不分直的、橫的的用法,反正也不會讓人找不到要找的地方,所以大家也就不那麼在意。但是啊,要是在資料庫的table中這樣用,那可就麻煩了。如果老闆要你把table的某一行刪掉,結果你刪掉橫的那一串,那可就不妙了。「行」是直的,「列」是橫的,不過據說在中國大陸,用法剛好相反,「行」是橫的,「列」是直的。反正不管在哪裡都很容易搞錯,所以最好的辦法,就是在使用的時候,不要只單說「行」、「列」,說成「直行」、「橫列」,那就不會有問題了。也許有人會說,既然是資料庫的table,那幹嘛不說「欄位」而說「行」?真是不專業,這樣也敢出來混?!這樣說也對啦!不過,人家是老闆,是給你薪水的那位耶!你,想要薪水的你,還有什麼意見嗎?

學新的東西時,除了應用一些小技巧外,如果也能從過去學過的東西觸類旁通,那學習效率可以提高不少。程式語言百百種,而且不斷推陳出新。如果能從過去學過的語言中汲取經驗舉一反三,面對新的語言,很快就能進入狀況,不過也要當心,不能太想當然耳的套用,畢竟不同的程式語言,可能會有類似但不同的設計。

在決定一個cell在下一代是生是死時,必須去算他周邊的八個cell中,有多少個是活著的。因為universe是list,所以用slicing的方式來處理,應該是比較好的做法。以前學過matlab,所以對於Python的slicing並不覺得有什麼太難理解的。當然啦,概念是差不多,但語法還是有些不同,這是要注意的。

一維list的slicing其實挺單純的,語法也簡單,就是把要的那一些element取出來而已。不過universe是二維的,而且現在是要計算一個九宮格裡頭,除了中心那格之外的八格,值是1的共有幾格。所以,如果能把九宮格裡頭的element取出,形成一個新的list,然後用sum()加總,再減去中心那個element的值,那就大功告成了。那要怎麼把九宮格裡頭的element給取出來呢?如果現在是要處理universe[y][x]這個cell,那根據matlab的語法,以及一維list的slicing語法,很自然的會寫成universe[y-1:y+2][x-1:x+2]。這寫法看起來挺漂亮的,不過天不從人願,稍微測試一下,就知道這樣的寫法是錯的,二維list的slicing,可不是原來想像中那樣的。

以a = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]這個list來說,a[1:4][1:3]得到的會是[[9, 10, 11, 12], [13, 14, 15, 16]]。乍看之下,實在看不懂是怎麼回事。在網路上找了半天,在二維slicing這個問題上,絕大部分都是要人用numpy這個module的array來寫,只有少數文章有提到二維list的slicing,不過都搔不到癢處,看了老半天,還是腦袋一團亂,只好自己猜測歸納、自己測試。

奮鬥了老半天,突然靈光一閃,喔~~~原來是這麼回事!原來,a[1:4][1:3]的作用,就相當於

b = a[1:4]
b[1:3]

這可以理解成[1:4]和[1:3]是用來做slicing的operator。既然作用看來像是operator,那應該可以再來一個,試試看便知道。結果一如預期,a[1:4][1:3][0:1]得到的是[[9, 10, 11, 12]]。既然如此,那就給他繼續下去,試看看a[1:4][1:3][0:1][1:3]。結果得到[[]],沒了!那a[1:4][1:3][0]呢?得到[9, 10, 11, 12],而a[1:4][1:3][0][1:4]得到[10, 11, 12]。

總算摸清楚二維list的slicing了!也許不該叫二維list,講巢狀list會比較好。講二維list,是因為長得像二維的array,可在做slicing的時候,根本就和幾維沒關係,完全就是「巢狀」的概念。嚴格來說,list和array是完全不同的東西,只是長相和用法在很多地方很相像,所以利用array的概念來學list,會比較容易進入狀況。不過千萬要提醒自己,它們畢竟是不同的東西,不能完全的類比,不然可是會有苦頭吃的。

留言
avatar-img
留言分享你的想法!
avatar-img
ysf的沙龍
15會員
142內容數
寫點東西自娛娛人
ysf的沙龍的其他內容
2025/04/14
花了些時間,靜下心來,仔仔細細地研究了一番,總算把Python呼叫函數時引數的傳遞方式給徹底搞清楚了。
2025/04/14
花了些時間,靜下心來,仔仔細細地研究了一番,總算把Python呼叫函數時引數的傳遞方式給徹底搞清楚了。
2024/05/08
呼!折騰了好久,終於徹底搞清楚pygame的各個blend mode所用的計算式,到底是長啥樣子了。
2024/05/08
呼!折騰了好久,終於徹底搞清楚pygame的各個blend mode所用的計算式,到底是長啥樣子了。
2023/12/20
在寫《The Nature of Code閱讀心得筆記——使用Python實作》的[第四章]4.3節時,原書提到,在使用Java的ArrayList時,如果用迴圈一面走訪一面又移除其中的元素,那會有難以察覺的問題存在。寫個小程式測試的結果發現,Python的list也會有一樣的問題。
Thumbnail
2023/12/20
在寫《The Nature of Code閱讀心得筆記——使用Python實作》的[第四章]4.3節時,原書提到,在使用Java的ArrayList時,如果用迴圈一面走訪一面又移除其中的元素,那會有難以察覺的問題存在。寫個小程式測試的結果發現,Python的list也會有一樣的問題。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
當轉換工作時,使用學習地圖可以幫助你有架構地擬定目標、拆解目標,並且一步步執行,讓你穩穩地上手新工作。學習地圖是一種組織知識和技能的方法,通過將學習目標拆解成多個小部分,並按照時間和先後順序排列,讓學習變得更加有條理和有效。使用學習地圖可以讓你有條理地學習,也能降低焦慮感與迷失感,並且增加學習的動力
Thumbnail
當轉換工作時,使用學習地圖可以幫助你有架構地擬定目標、拆解目標,並且一步步執行,讓你穩穩地上手新工作。學習地圖是一種組織知識和技能的方法,通過將學習目標拆解成多個小部分,並按照時間和先後順序排列,讓學習變得更加有條理和有效。使用學習地圖可以讓你有條理地學習,也能降低焦慮感與迷失感,並且增加學習的動力
Thumbnail
"網"就是把許多不同的知識點,排列組合編織成網。 一、組塊與分塊 舉個例子來說明,打籃球時要學會了運球、傳球、投籃,運球中又有換手運球、胯下運球、背後運球等等;傳球又有地板傳球、肩上傳球、跳傳等等;投籃有拋投、跳投、翻身跳投等等,籃球的知識分了很多細項,這些技術學會後將他排列組合,就會變成展新的技術
Thumbnail
"網"就是把許多不同的知識點,排列組合編織成網。 一、組塊與分塊 舉個例子來說明,打籃球時要學會了運球、傳球、投籃,運球中又有換手運球、胯下運球、背後運球等等;傳球又有地板傳球、肩上傳球、跳傳等等;投籃有拋投、跳投、翻身跳投等等,籃球的知識分了很多細項,這些技術學會後將他排列組合,就會變成展新的技術
Thumbnail
來自日本的編輯工學,是一門透過編輯技巧進行跨域思考和整合研究的技術,或者更白話的說法是,幫助人們從不同角度剖析複雜事物與重新理解世界的工具。而這本書的目的,是希望讀者能從這些方法中重新覺醒自己的「編輯力」,不僅僅是提升自我思考的領域,也在這個快速變化的大環境能適應和及時應變。
Thumbnail
來自日本的編輯工學,是一門透過編輯技巧進行跨域思考和整合研究的技術,或者更白話的說法是,幫助人們從不同角度剖析複雜事物與重新理解世界的工具。而這本書的目的,是希望讀者能從這些方法中重新覺醒自己的「編輯力」,不僅僅是提升自我思考的領域,也在這個快速變化的大環境能適應和及時應變。
Thumbnail
甚麼是Z字點子呢? 就如同書封上呈現的那樣,利用8個步驟連結成三個Z字,來激發自己的創意和點子。
Thumbnail
甚麼是Z字點子呢? 就如同書封上呈現的那樣,利用8個步驟連結成三個Z字,來激發自己的創意和點子。
Thumbnail
學習像拼圖,像出遊,像畫圖,像蜘蛛網 今天想整理我讀了五本書的心得: 高手學習、深度學習的技術、大腦喜歡這樣學、超速學習、躍遷 來討論學習這件事
Thumbnail
學習像拼圖,像出遊,像畫圖,像蜘蛛網 今天想整理我讀了五本書的心得: 高手學習、深度學習的技術、大腦喜歡這樣學、超速學習、躍遷 來討論學習這件事
Thumbnail
Game of Life的輸出結果,也就是每代演化後universe的長相,程式要怎麼寫呢?現在有個二維list,裡頭放的是一堆0和1,要怎麼樣用西洋棋盤式的方式來顯示呢?這看來勢必得用到別人寫好的module來做,才能省時、省力又漂亮。第一個想到的,當然就是matplotlib這個科學繪圖用的mo
Thumbnail
Game of Life的輸出結果,也就是每代演化後universe的長相,程式要怎麼寫呢?現在有個二維list,裡頭放的是一堆0和1,要怎麼樣用西洋棋盤式的方式來顯示呢?這看來勢必得用到別人寫好的module來做,才能省時、省力又漂亮。第一個想到的,當然就是matplotlib這個科學繪圖用的mo
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News