###### tags: `chapter 6` `Python` # 6-1 認識串列 # 串列(List)和`int`、`float`、`str`等變數型態不一樣,他是一個「資料結構」,而資料結構的用意是讓我們更方便的操作變數,例如我們這裡要介紹的串列,他提供的是一種類似螺絲盒的結構,盒子內的每一個格子變可以放置我們的螺絲(變數),這樣子對於後續的程式比較友善也利於我們撰寫程式,因為你知道你需要的變數都在這個盒子裡面,我們只要去這個盒子裡面找我們的變數就好了 串列是最基本的資料結構,他相當於是C/C++的「陣列(Array)」,但python的串列比C/C++的陣列要方便的多,和迴圈一起搭配使用時也可以有其他C/C++沒有的功能。 大家都說,一個程式是由「資料結構」$+$ 「演算法」所構成的,由此可知資料結構對於一個程式的重要性,從更日常的角度去思考的話,「鞋櫃就像是串列,而鞋子就像是變數」,沒有鞋櫃可不可以?可以,但是你的鞋子會很亂。 ## 我的第一個串列 ## 這裡有一個串列(list)。 ```python= fruits = ["apple" , "banana" , "kiwi"] ``` 可以觀察到,這個串列的名字叫做`fruits`,內容物有三個,依序是`apple`、`banana`、`kiwi`,而他們三個被`[]`包起來,`[]`就是我們用來宣告串列的符號。 再細看這三個被包住的變數,他們被`""`包著,看來他們是字串型態! ## 指定串列元素 ## 給定一個串列,如果想輸出其第二個資料,你可以使用`[]`來指定特定元素。 ```python= player = ["Lebron" , "Jordan" , "Curry" , "Giannis" , "Howard"] print(player[1]) # Jordan ``` ![](https://i.imgur.com/OTG5MgO.png) python的串列編號是從`0`開始的,並不是直觀的從`1`開始,這一點在使用上必須特別注意。因此串列的第二個資料`player[1]`是`Jordan`,不是`Curry`哦, :::danger 這一點和介紹字串時所提到的索引值是共用的觀念! ::: ![](https://i.imgur.com/BMsk2Zv.png) 如果在不知道資料個數的情況下,想要輸出最後一個或著倒數第n個資料的話,則可以使`-`加上`index`來指定。 ```python= player = ["Lebron" , "Jordan" , "Curry" , "Giannis" , "Howard"] print(player[-1]) print(player[-3]) # Howard # Curry ``` ## 串列切片(slice) ## python的串列提供的slice功能就是C/C++陣列沒有的功能,其目的是為了讓我們能夠更方便的輸出特定範圍的串列資料,其使用方式是在`[]`內使用`:`來分開串列index的起點以及終點。 ```python= player = ["Lebron" , "Jordan" , "Curry" , "Giannis" , "Howard"] print(player[1:3]) # ['Jordan', 'Curry'] ``` ![](https://i.imgur.com/JHFN0XV.png) 起點和終點的判定方式為,起點 <= index < 終點,因此上述的程式才會輸出index為`1`、`2`的球員。 ![](https://i.imgur.com/Nkkfj7r.png) ## 更改串列內容 ## 如同前面介紹,串列是由好多個相同類型的變數組成,因此他們拆開仍然是一個變數,也保有變數的特性,因此想更改串列元素的值,和修改變數的值只差需要多一個用`index`指定元素的步驟而已。 ```python= player = ["Lebron" , "Jordan" , "Curry" , "Giannis" , "Howard"] player[0] = "Thompson" print(player[0]) # Thompson ``` 如果想要刪除串列內容,只需要透過內建的`del()`函數去指定串列元素即可完成。 ```python= player = ["Lebron" , "Jordan" , "Curry" , "Giannis" , "Howard"] del player[0] print(player) # ['Jordan', 'Curry', 'Giannis', 'Howard'] ``` ![](https://i.imgur.com/vIzD3Zo.png) 刪除時如果忘了指定元素,那整個串列就掰掰囉!! ![](https://i.imgur.com/7Uv3Vxr.png) ## 取得串列個數 ## 有時候在做文章字數統計時會需要`len()`來幫助我們得知字數,這樣我們就不用一個一個自己數啦!!! ```python= player = ["Lebron" , "Jordan" , "Curry" , "Giannis" , "Howard"] print(len(player)) # 5 ```