---
# System prepended metadata

title: 6-1 認識串列
tags: [chapter 6, Python]

---

###### 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
```