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。

上一章節
下一章節
使用者分享的影片來自 YouTube。瞭解更多
+1 
感謝內容貢獻者 此篇文章由 1 位使用者共同編輯而成,並且由學呀的編輯團隊負責維護。點此查看編輯者名單。