慶祝學呀
百萬
造訪!
尚未建立名稱
能量:0
我的帳號中心
問 學Bot 任何問題!
首頁&搜尋
最愛&收藏
所有課程
分享資源
帳號設定
關於學呀
線上募款
Python中的列表
編輯章節
EDU-MD
Google 教室
加至書籤
# Python中的列表 **列表**(list)這個名字,顧名思義就是一個可以帶有很多資料的東西。在 Python 中,列表是一個內建的[資料型態](/view/f99a848dfa?subj=python)。寫程式時,因為有列表的存在,使我們可以達成很多原本看似不可能的目標。在這個章節中,讓我們一同探索關於列表最基本的知識吧! ## 什麼是列表? 還記得嗎?當初在學習 [for迴圈](/view/99027b856f?subj=python) 時我們使用了列表,但是並沒有詳細地去探究列表到底是什麼。列表其實就是一長串被包裝在中括號 `[]` 中的資料。下面是一個充滿了水果字串的列表例子: ``` >>> fruits = ["apple", "banana", "cherry"] ``` 因為我們已經將變數 fruits 定義為了該列表,我們便可以使用 `type()` 來檢查其資料型態: ``` >>> type(fruits) <class 'list'> ``` 這麼一來,我們就能確定它的確是一個列表了。現在,我們大概對列表多一點的瞭解了,接下來,讓我們複習一下當初學習的 for 迴圈時所看到的迴圈語法。假設有一個列表 alpha,其中帶有英文字母的前 5 個字母,而我們要將其印出來: ``` alpha = ["a", "b", "c", "d", "e"] for letter in alpha: print(letter) ``` 我們將能得到這樣的輸出: ``` a b c d e ``` ## 列表不是陣列 雖然列表(list)與陣列(array)這兩個東西常常被大家搞混,但是其實兩者是不同的東西!而且在 Python 中,並**沒有一個真正的陣列**。這裡,讓我們整理一下列表與陣列的異同之處。 **陣列**是一種資料結構的形式。假設今天我們建立了一個長度為 10 的數字陣列,那麼電腦便會在記憶體中切割出 10 的**連續**的位置給這些數字。也因為如此,陣列的長度在一開始就要註明,電腦才會知道要切割出多少的記憶體位置給這些數字。另外,陣列在宣告完後,就不能再更改長度了。以下列出一些關於陣列的基本知識: 1. 陣列在宣告完後長度固定 2. 一個陣列只能有一種資料型態 3. 陣列內容在記憶體上位置連續 **列表**也是一種資料結構的形式,但是不同於陣列的是,列表中的資料在記憶體中不一定會連續。因此,假設我們建立了一個長度 10 的列表,電腦會在記憶體上找到適合的 10 個位置,而不是像陣列那樣切割出連續的 10 個位置。以下列出一些關於列表的知識: 1. 列表的長度可以不固定 2. 一個列表可以有多種資料型態 3. 列表內容在記憶體上不一定連續 這裡,讓我們馬上來試試看多種資料型態的列表吧!我們將這各種資料型態都丟進去列表中,再用 for 迴圈將其印出: ``` all = ["Hi", 2, True] for item in all: print(item) ``` 將會得到這樣的結果: ``` Hi 2 True ``` ## + 運算符號 跟數字一樣的,我們可以使用加號 `+` 對列表做運算。加號 `+` 可以將兩個列表連接在一起,例如: ``` names1 = ["Amy", "Jake"] names2 = ["Holt", "Boyle"] allNames = names1 + names2 print(allNames) ``` 將能得到這樣的輸出: ``` ['Amy', 'Jake', 'Holt', 'Boyle'] ``` 這裡必須注意的是,有時候我們想在列表中新增一個新的項目,很直覺的我們會想要使用加號 `+` 來達成目的。然而,Python 並不支援列表與非列表型態的相加。例如,下面這段程式: ``` newList = [3, 4, 5] + 6 ``` 將會得到這樣的錯誤: ``` Traceback (most recent call last): File "", line 1, in <module> TypeError: can only concatenate list (not "int") to list ``` ## * 運算符號 有了加號 `+`,基本上就會有乘號 `*` 了吧!沒錯的,在 Python 中,將兩個列表相加,可以得到一個新的列表,而將列表與數字相乘呢?讓我們馬上來試試看: ``` theList = ["foo", "bar"] theList *= 2 print(theList) ``` 將會得到這樣的結果: ``` ['foo', 'bar', 'foo', 'bar'] ``` 沒錯的!在 Python 中,列表對數字的乘法就好像在將很多的一樣的列表在一起一樣。 ## in 和 not in 運算符號 `in` 運算符號可以檢查一個特定的東西是否在指定的列表中,例如我們有一個列表 names,其中帶有著各個不同的名字,而我們想要檢查「Merry」是否在這個列表中: ``` names = ["Bob", "Sean", "Amy"] print("Merry" in names) ``` 將會得到 : ``` False ``` 簡單來說,`in` 運算符號就是在檢查列表中是否含有某個特定的東西。如果有,就回傳 True,反之,則回傳 False。此外,我們也可以使用 `not in` 運算符號: ``` nums = [1, 2, 3, 5] print(4 not in nums) ``` 將會輸出: ``` True ``` ## len() 如果今天我們想要得到一個列表的長度,那麼我們可以使用 `len()` 這個東西。只要在其後面的括號中放入待測的列表,它就會回傳該列表的長度。舉例來說: ``` a = [1, 3, 5, 7] print(len(a)) ``` 將會得到這樣的輸出: ``` 4 ``` 這是因為,`len()` 會回傳列表的長度,而列表 a 中有 4 個項目,分別是 1、3、5、7,因此螢幕上便印出數字 4。
複製內容