機
器
人
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 的連續的位置給這些數字。也因為如此,陣列的長度在一開始就要註明,電腦才會知道要切割出多少的記憶體位置給這些數字。另外,陣列在宣告完後,就不能再更改長度了。以下列出一些關於陣列的基本知識:
- 陣列在宣告完後長度固定
- 一個陣列只能有一種資料型態
- 陣列內容在記憶體上位置連續
列表也是一種資料結構的形式,但是不同於陣列的是,列表中的資料在記憶體中不一定會連續。因此,假設我們建立了一個長度 10 的列表,電腦會在記憶體上找到適合的 10 個位置,而不是像陣列那樣切割出連續的 10 個位置。以下列出一些關於列表的知識:
- 列表的長度可以不固定
- 一個列表可以有多種資料型態
- 列表內容在記憶體上不一定連續
這裡,讓我們馬上來試試看多種資料型態的列表吧!我們將這各種資料型態都丟進去列表中,再用 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。