# 列表 List
`List`用`[ ]`表示,是Python中使用最頻繁且最通用的復合數據類型。
**列表中的正反索引:**

## 特點
* 列表中每個元素都可變(修改、刪除)
* 列表是有序的,可以用索引去訪問指定元素
* 列表中的元素可以是`Python`中的任何對象,可以是字符串、整數、元組、也可以是list等
* 列表中值的切割可以用到變量`[頭下標:尾下標]`,從左到右索引默認 0 開始,從右到左索引默認 -1 開始,下標可以為空表示取到頭或尾
* 加號 + 是列表連接運算符,星號 * 是重復操作
## 基礎操作
```python
list = ['play', 'algorithm', 'python', 2019, 5.11, 'python']
author_list = ['Tommy', 'ChaoChao', 'Wsqstar']
# 正數操作,截取不包含冒號右側
print('完整列表 list:' , list)
print('第二個元素 list[1]:' , list[1])
print('第二個到第四個元素 list[1:4]:' , list[1:4])
print('第三個到最后一個元素 list[2:]:' , list[2:])
# 倒數操作,截取不包含冒號右側
print('倒數第二個元素 list[-2]:' , list[-2])
print('倒數最后三個元素 list[-3:]:' , list[-3:])
print('倒數第二個到第四個元素 list[-4:-1]:' , list[-4:-1])
# * + 操作
print('輸出列表兩次 author_list * 2:' , author_list * 2)
print('兩個列表組合 list + author_list:' , list + author_list)
# 元素是否存在于列表中
print('python是否在列表中:', 'python' in list)
# 迭代
print('迭代輸出author_list每一項:')
for item in author_list:
print(item)
```
**輸出結果**
```
完整列表 list: ['play', 'algorithm', 'python', 2019, 5.11, 'python']
第二個元素 list[1]: algorithm
第二個到第四個元素 list[1:4]: ['algorithm', 'python', 2019]
第三個到最后一個元素 list[2:]: ['python', 2019, 5.11, 'python']
倒數第二個元素 list[-2]: 5.11
倒數最后三個元素 list[-3:]: [2019, 5.11, 'python']
倒數第二個到第四個元素 list[-4:-1]: ['python', 2019, 5.11]
輸出列表兩次 author_list * 2: ['Tommy', 'ChaoChao', 'Wsqstar', 'Tommy', 'ChaoChao', 'Wsqstar']
兩個列表組合 list + author_list: ['play', 'algorithm', 'python', 2019, 5.11, 'python', 'Tommy', 'ChaoChao', 'Wsqstar']
python是否在列表中: True
迭代輸出author_list每一項:
Tommy
ChaoChao
Wsqstar
```
## 基礎函數
```Python
list = ['play', 'algorithm', 'python', 2019, 5.11, 'python']
int_list = [12, 22, 30, 13, 24, 1, 10, 10.3, -1]
print('列表長度 len(list):', len(list))
# max() 和 min() 函數只支持列表元素為int和float這種可以計算數值大小的類型
print('最大值 max(int_list):', max(int_list))
print('最小值 min(int_list):', min(int_list))
# 將一個對象快速轉為List
print("Str對象轉為List list('Tommy'):", list('Tommy'))
```
**輸出結果**
```
列表長度 len(list): 6
最大值 max(int_list): 30
最小值 min(int_list): -1
Str對象轉為List list('Tommy'): ['T', 'o', 'm', 'm', 'y']
```
## 基礎方法
```Python
list = ['play', 'algorithm', 'python', 2019, 5.11, 'python']
author_list = ['Tommy', 'ChaoChao', 'Wsqstar']
list.append(author_list)
print('在末尾添加新對象 list.append(author_list):', list)
list.remove(author_list)
print("移除某個元素第一個匹配項 list.remove(author_list):", list)
list.insert(5, 'Baidu')
print("在指定位置添加新對象 list.insert(5, 'Baidu'):", list)
list.extend(author_list)
print('批量添加另一個列表中的值到末尾 list.extend(author_list):', list)
print("統計某個元素在列表中出現的次數 list.count('python'):", list.count('python'))
print("找出某個元素第一次出現的索引位置 list.index('python'):", list.index('python'))
list.pop()
print("移除一個元素,默認最后一個元素 list.pop():", list)
list.pop(0)
# list.pop([index = -1])方法同del,以下例子也可以用del語句:del list[0]
print("移除第一個元素 list.pop(0):", list)
list.reverse()
print("將列表元素反向 list.reverse():", list)
print('列表排序,建議查看菜鳥教程獲得更好的講述:' , 'https://www.runoob.com/python/att-list-sort.html')
list2 = list.copy()
print("列表復制,我是list復制來的list2 list.copy():", list2)
list2.clear()
print('list2清空后 list2.clear():', list2)
# 復制和使用 = 賦值不同,復制產生了新的列表,對list2的任何操作不影響list
print('list2清空后的list:', list)
# 使用 = 賦值時,所有的操作都會影響到list本身
list3 = list
print('我是賦值來的list3:', list3)
list3.clear()
print('list3清空后 list3.clear():', list3)
print('list3清空后的list:', list)
```
**輸出結果**
```
在末尾添加新對象 list.append(author_list): ['play', 'algorithm', 'python', 2019, 5.11, 'python', ['Tommy', 'ChaoChao', 'Wsqstar']]
移除某個元素第一個匹配項 list.remove(author_list): ['play', 'algorithm', 'python', 2019, 5.11, 'python']
在指定位置添加新對象 list.insert(5, 'Baidu'): ['play', 'algorithm', 'python', 2019, 5.11, 'Baidu', 'python']
批量添加另一個列表中的值到末尾 list.extend(author_list): ['play', 'algorithm', 'python', 2019, 5.11, 'Baidu', 'python', 'Tommy', 'ChaoChao', 'Wsqstar']
統計某個元素在列表中出現的次數 list.count('python'): 2
找出某個元素第一次出現的索引位置 list.index('python'): 2
移除一個元素,默認最后一個元素 list.pop(): ['play', 'algorithm', 'python', 2019, 5.11, 'Baidu', 'python', 'Tommy', 'ChaoChao']
移除第一個元素 list.pop(0): ['algorithm', 'python', 2019, 5.11, 'Baidu', 'python', 'Tommy', 'ChaoChao']
將列表元素反向 list.reverse(): ['ChaoChao', 'Tommy', 'python', 'Baidu', 5.11, 2019, 'python', 'algorithm']
列表排序,建議查看菜鳥教程獲得更好的講述: https://www.runoob.com/python/att-list-sort.html
列表復制,我是list復制來的list2 list.copy(): ['ChaoChao', 'Tommy', 'python', 'Baidu', 5.11, 2019, 'python', 'algorithm']
list2清空后 list2.clear(): []
list2清空后的list: ['ChaoChao', 'Tommy', 'python', 'Baidu', 5.11, 2019, 'python', 'algorithm']
我是賦值來的list3: ['ChaoChao', 'Tommy', 'python', 'Baidu', 5.11, 2019, 'python', 'algorithm']
list3清空后 list3.clear(): []
list3清空后的list: []
```
# 代碼庫地址
[https://github.com/liuzhen153/play-algorithm-python](https://github.com/liuzhen153/play-algorithm-python)