Python中的列表
 課程目錄
 編輯章節
 EDU-MD
 Google 教室
 加至書籤

Python中的列表

列表(list)這個名字,顧名思義就是一個可以帶有很多資料的東西。在 Python 中,列表是一個內建的資料型態。寫程式時,因為有列表的存在,使我們可以達成很多原本看似不可能的目標。在這個章節中,讓我們一同探索關於列表最基本的知識吧!

什麼是列表?

還記得嗎?當初在學習 for迴圈 時我們使用了列表,但是並沒有詳細地去探究列表到底是什麼。列表其實就是一長串被包裝在中括號 [] 中的資料。下面是一個充滿了水果字串的列表例子:

>>> 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。

 均一平台
 台達磨課師
 酷課雲
 可汗學院
無相關資源
 收起側邊目錄
 
前往目錄頁面