資料結構(I)—list與tuple(上集)

今天,我們進入到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的部分資料切出來。

值得注意的是,這個中括號裡的index可是含頭不含尾唷。
另外,如果要從頭開始,可直接用[:b]。同理,若要取到最後,可直接採用[a:]

2.修改list裡面的內容

現在,我們已經知道如何藉由index呼叫出list裡面不同位置的值了。然而,當我們發現該值需要修改,比方說成員改變,或是名字有誤等等,該怎麼處理呢?

這就是list方便的地方,要改其內容相當容易,只要用index呼叫出list裡面所對應的值,並直接指定新的值就可以了!

3.找到list裡面的值所對應的index

現在,我們已經學會用給定index找到list裡面相對應的值,也學會藉由index來修改list裡面的值。現在,讓我們來看看該怎麼找到list裡面資料的相對應位置呢?

很簡單,用list的變數名稱.index(要尋找的值)就可以了!

值得注意的是,若list中有好幾個相同的值,這個方法只會找出第一個值所對應的位置唷!

4.檢驗某筆資料是否在List當中

舉例來說,我們想知道某人是不是在會員名單內,該如何檢視呢? 很簡單,用”in”就可以囉!

5.在list中加入新的資料

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

6.在list當中插入新的資料

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

7. list 的排序

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

在這裡我們可以看到,直接用sort(),Python會幫我們從字母A-Z開始排序。
若我們在sort()裡面加上reverse=True,則Python會幫我們依照字母Z-A排序。

如果是數字呢?怎麼由大到小排序?怎麼由小到大排序?讓我們看下去!

我們看到,用sort() Python會自動幫我們由小到大排序,而加上reverse=True,則Python會幫我們由大到小排序。

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

在這邊我們可以看到,當我們用list變數名稱.sort()時,該list的順序已經改變,我們找不回原本的順序。
然而,當我們用sorted(list變數名稱)排序時,我們可以看到排序後的結果,而當我們輸入原始的變數名稱時,我們依然保有原始資料的排序。

8.List的長度

有時候,list裡面包含了好多好多的資料,而我們該如何得知list裡面到底包含了多少筆資料呢? 答案是,用len(list變數名稱)就可以了!

舉例來說,如果我們想要知道這個社團裡究竟有多少成員:

到這邊,我們已經學會了如何建立list、如何擷取list的部分資料、如何用index找到list中相對應的資料以及用list值找到相對應的index,我們也學會了如何在list中增加或插入資料,學會將list排序,並找出list的長度。

明天,我們將繼續介紹如何移除list的資料,如何簡單計算數字型態的list等單元!我們明天見!

Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *