## 什么是容器
上章我們學習了數字和字符串。這兩種數據是是不可拆分的“原子元素”(嚴格來說我字符串是可以再拆分成字符的,但是這個可以忽略)。
我們生活中還有另外一大類型的數據,**容器**:**由多個元素組成的一個中數據**。我們來看看生活中哪些數據是**容器**。*一斤蘋果*、*一套畫冊*、*一群小鳥*。*斤、套、群*這些都是形容一組數據的介詞。都有*一堆*的意思。這些就是容器。

在游戲中就有更多容器的例子啦。游戲主角身上穿的裝備列表、游戲征途中的所有怪物,這些都是容器。
## 容器的作用
要是世界上只有我們一個人,得是多么的孤單。所以世界上的很多東西都是可以“類聚群分”的。通過容器的方式,能夠讓我們統籌全局,站在更高的視角上分析問題。
接下來,我們就學習下容器在python里的表達。
## 什么是列表
列表就是我們最常見的容器的了,我們可以用**由一組元素組成的數據叫容器**來定義它。
我們前面提到的*一斤蘋果*、*一套畫冊*都是容器。下面,我們就拿*一套畫冊*來舉例子,看我們對這種容器的數據做哪些操作。

## 對列表能做哪些操作
* 數畫冊里共有多少本漫畫
* 往畫冊里加一本漫畫
* 把畫冊的第一本書換為*七龍珠*
* 從畫冊里去掉一本漫畫
* 取這個畫冊里的第二本漫畫
* 取這個畫冊里的第二到第四本漫畫
* 判斷*海賊王*是否在這套畫冊里
* 把這個畫冊按照漫畫的名字排序
是不是發現,只要套用生活中的例子,理解編程概念是很簡單的。編程就是處理數據的,我們平時怎么處理數據,編程就能怎么處理數據(當然以后會有更高級的處理方式)。
## 在python中定義列表
上面我們認識了什么是列表,接下來我們就看看怎么在python里定義個列表吧。
```
a = [1,3,5,7,9]
hero = ['阿珂','韓信','李白']
book_list = ['海賊王','叮當貓','老夫子']
```
在第一行中,``[1, 3, 5, 7, 9]`` 就是一個小于10的奇數容器。定義一個列表,我們只需要用中括號把我們的元素包起來、每個元素用逗號隔開即可。第一行的整體意思是,我們定義一個變量a,并用賦值語句把**由 1、3、5、7、9 5個元素組成的**賦值給變量a,其中:1,3,5,6,7,9是我們上章節學習的數字。
在第二行中,`` ['阿珂','韓信','李白']`` 是由 阿珂、韓信、李白三個游戲角色組成的列表,我們把這個列表通過賦值語句給到了hero這個變量。其中,'阿珂','韓信','李白'使我們上個章節學習的字符串。
第三行, `` ['海賊王','叮當貓','老夫子']`` 是由 海賊王、叮當貓、老夫子三本漫畫組成的列表,我們把這個列表給到了變量:``book_list``
## 在python中操作列表
接下來,我們就看一下在python中怎么對列表變量 ``book_list`` 做我們前文提到的那些操作。
```
book_list = ['海賊王','叮當貓','老夫子']
len(book_list)
book_list.append('西游記')
book_list[1]
book_list[0] = '七龍珠'
book_list[1:3]
book_list.remove('叮當貓')
'海賊王' in book_list
book_list.sort()
print(book_list)
```
* **獲取列表長度** 數畫冊里共有多少本漫畫
`len(book_list)` 中的 len()方法,和字符串里的取字符串的長度是一樣的
* **往列表里增加元素** 往畫冊里加一本漫畫
`book_list.append('西游記')` `append()`方法,append是追加的意思,往列表里追加一個元素
* **獲取列表元素** 取這個畫冊里的第二本漫畫
`book_list[1]` 我們使用`[ 1]` 的方式去列表里某個位置的元素,注意,還是從0開始取的
* **更改列表里某個位置的值** 把畫冊的第一本書換為*七龍珠*
`book_list[0] = '七龍珠'` 直接用賦值表達式來改變列表某個位置下的值。
* **獲取多個元素** 取這個畫冊里的第二到第四本漫畫
`book_list[1:3]` 取列表里的多個元素直接用`[1:3]`就可以了,和字符串里的取字符串方法一樣。
* **刪除元素**從畫冊里去掉一本漫畫
`book_list.remove('叮當貓')` 使用 remove方法刪除列表里的某個元素
* **判斷列表是否包含某個元素** 判斷*海賊王*是否在這套畫冊里
`'海賊王' in book_list` 使用 `... in ...` 方法。in 左側是元素,in右側是列表。
* **列表排序** 把這個畫冊按照漫畫的名字排序
`book_list.sort()` 使用 sort方法對列表里的元素排序,默認按照從小到大的順序排序。
## 總結
這節課的知識點有點多,我們在掌握的時候,首先要理解什么是列表,對列表能做哪些操作。語法我們可以慢慢記憶。下節課,我們用列表來做一個項目實例,讓大家有個感性的認識。
- 課程介紹
- 搭建環境
- 什么是計算機
- 程序是怎么運行的
- 安裝python
- 項目實例-安裝IDE
- 變量和簡單數據類型
- 數據&變量
- 數字
- 字符串
- 布爾類型
- 項目實例
- 容器-列表
- 容器
- 列表
- 項目實例
- 容器-字典
- 定義字典
- 項目實例
- 數據類型總結
- 條件語句
- python條件語句
- 項目實例
- 循環語句
- for循環
- while循環
- 項目實例
- 函數
- 5.0函數定義
- 5.2函數實戰
- 6.文件系統
- 6.1 文件系統介紹&python查找文件
- 6.2 用python讀寫文件
- 7. python操作時間
- 8.面向對象
- 8.1 類和對象
- 8.2 繼承和重寫
- 8.3 面向對象項目實戰
- 9 GUI編程
- 9.1 GUI基礎
- 9.2 備忘清單GUI版
- 10.網絡
- 10.1 網絡的發展
- 10.2 python http
- 11.web開發
- 11.1 web基礎&HTML
- 11.2 CSS&JavaScript
- 11.3 網頁計算器
- 11.3 網站開發實戰-播客搭建
- 11.3 python-web
- 12. 項目實戰-數據處理
- 13. 項目實戰-AI入門
- 13.1 環境搭建
- 心得
- 13.2 Tensorflow的瓜怎么吃
- 14 pygame
- 14.1 pygame Helloworld
- 14.4 pygame 動畫基礎 Animation
- 從0開始學python第14.5節 pygame 加載圖片和聲音
- 從0開始學python第14.6節 pygame.sprite(上)
- 14.7 pygame.sprite模塊(下)
- 14.8 pygame射擊游戲(一)
- pygame射擊游戲(二)
- 14.8 pygame射擊游戲(三)
- 14.8 pygame射擊游戲(四)
- 14.8 pygame射擊游戲(五)