今天,我們進入到Python的資料結構!所謂的資料結構,如同我們先前所述,可以想像著一個袋子(collection)裡面,放了各式各樣的東西(data),而這個袋子的展現方式,就是我們所稱的資料結構。
我們今天將跟大家分享兩種很像的資料結構—list與tuple。這兩種資料結構裡所蒐集的資料都是有順序的,而資料可以放入各種資料型態,如字串、數字及布林,甚至是list跟tuple等等都可以被放在裡面!
那麼,兩者究竟有什麼區別呢?list跟tuple最大的區別在於,list的內容是可以改變的,而tuple則否。待會大家將會藉由範例對這些相同相異更一目了然!事不遲疑,趕快進入我們今天的主題吧!
(一)list
在Python中,我們可以用中括號”[ ]”來建立list。中括號裡面,我們可以放入各式各樣的資料。

1.list indexing
在list裡面,每筆資料都是有順序的。而在Python的index中,我們第一筆資料的index為0,第二筆為1,第三筆為2,以此類推。同理,若要找最後一筆,可以直接採用index為-1,倒數第二筆為-2,倒數第三筆為-3以此類推。
我們可以用list的變數名稱加上中括號,裡面放入index,就可以找出該index所對應的資料值。若是放入”:”,則代表全部。

當然,我們也可以在括號中放入”a:b”(a,b指index),把list的部分資料切出來。

另外,如果要從頭開始,可直接用[:b]。同理,若要取到最後,可直接採用[a:]
2.修改list裡面的內容
現在,我們已經知道如何藉由index呼叫出list裡面不同位置的值了。然而,當我們發現該值需要修改,比方說成員改變,或是名字有誤等等,該怎麼處理呢?
這就是list方便的地方,要改其內容相當容易,只要用index呼叫出list裡面所對應的值,並直接指定新的值就可以了!

3.找到list裡面的值所對應的index
現在,我們已經學會用給定index找到list裡面相對應的值,也學會藉由index來修改list裡面的值。現在,讓我們來看看該怎麼找到list裡面資料的相對應位置呢?
很簡單,用list的變數名稱.index(要尋找的值)就可以了!

4.檢驗某筆資料是否在List當中
舉例來說,我們想知道某人是不是在會員名單內,該如何檢視呢? 很簡單,用”in”就可以囉!

5.在list中加入新的資料
在剛剛的例子中,我們發現Jocelyn應該要在成員名單中,但事實上成員名單中卻沒有她,我們該如何把她加入呢? 用”append(欲加入的資料)”就對了!

6.在list當中插入新的資料
先前我們提到,List裏頭的資料都是有順序的。假設我們的成員名單是依照年資順序來排序,而Jocelyn為第二資深的成員,那我們該如何把她的名字放到正確的位置呢? 這個時候,用”insert(index位置,欲加入的資料)”就對啦!

7. list 的排序
我們已經知道,list裡的資料都是有順序的。而今天,我們想將成員名單以名字自首(A-Z)來排序,該怎麼處理呢? 很簡單,用sort()就對了!

若我們在sort()裡面加上reverse=True,則Python會幫我們依照字母Z-A排序。
如果是數字呢?怎麼由大到小排序?怎麼由小到大排序?讓我們看下去!

值得注意的是,當我們對list用sort()後,該list就無法回到原本的順序了。所以,如果想要保留原本的順序,可以考慮使用sorted()。

然而,當我們用sorted(list變數名稱)排序時,我們可以看到排序後的結果,而當我們輸入原始的變數名稱時,我們依然保有原始資料的排序。
8.List的長度
有時候,list裡面包含了好多好多的資料,而我們該如何得知list裡面到底包含了多少筆資料呢? 答案是,用len(list變數名稱)就可以了!
舉例來說,如果我們想要知道這個社團裡究竟有多少成員:

到這邊,我們已經學會了如何建立list、如何擷取list的部分資料、如何用index找到list中相對應的資料以及用list值找到相對應的index,我們也學會了如何在list中增加或插入資料,學會將list排序,並找出list的長度。
明天,我們將繼續介紹如何移除list的資料,如何簡單計算數字型態的list等單元!我們明天見!