串列是由一群資料排在一起形成的,其定義與使用方式非常簡單。定義時必須使用中括號,並在內容之間以逗點隔開;存取元素時則是依照順序,由 0 開始數,或者由 -1 開始倒數,並且也是使用方括號存取。範例如下:
a = [9, 4, 8, 7] print(a[0]) print(a[1]) print(a[2]) print(a[3]) print(a[-1]) print(a[-2]) print(a[-3]) print(a[-4])存取元素時,如果使用小數當作索引,或者索引值超出範圍時,會產生錯誤。範例如下:
a = [9, 4, 8, 7] print(a[3.14]) print(a[4]) print(a[-5])透過「:」這個運算,也可以一次存取多個元素,如下:
a = [12, 34, 56, 78, 90, 123, 456, 789, 1234, 5678, 12345] print(a[3:]) # 從 a[3] 開始取到結束 print(a[:6]) # 從頭開始取到 a[6-1] print(a[4:7]) # a[4] 開始取到 a[7-1],或者說 a[4] 開始取 7-4 個 print(a[3:8:2]) # a[3] 開始取到 a[8-1],每 2 個取 1 個透過「:」存取多個元素時,如果遇到索引值超出範圍,則會視為從某個位置開始或結束,有看到元素則取出,因此可能會是空串列或整個串列,如下:
a = [12, 34, 56, 78, 90, 123, 456, 789, 1234, 5678] print(a[100:]) # 這行會拿到空串列 print(a[:100]) # 這行會拿到整個串列 print(a[-100:]) # 這行會拿到整個串列判斷 list 當中是否含有特定元素可以使用「in」,取得長度可以使用「len」;此外,如果 list 當中都是數字,還可以進行一些基本統計:
a = [12, 34, 56, 78, 90, 123, 456, 789, 1234, 5678, 12345] print(123 in a) print(5566 not in a) print(len(a)) # 如果內容都是數字,可以使用以下的計算 print(min(a)) print(max(a)) print(sum(a))修改一或多個元素的方法,如以下範例:
a = [12, 34, 56, 78, 90, 123, 456, 789, 1234, 5678, 12345] a[0] = 'hello' print(a) a[7:10] = [12] * 3 # [12] 這個串列重複三次 print(a) a[5:8] = ['x', 'y', 'z'] print(a) a[1:4] = '!!!' print(a)在上述範例中你可以看到,在 Python 當中,串列是可以把不同類型的資料放在一起的;此外,當一次修改多個元素時,你可以將此操作視為「把左邊所代表的子串列剪掉,換成右邊的串列接上去」(Question: 當左右兩邊所指的個數不一致時,會發生什麼事?)。
新增與刪除元素的方法如下:
a = [12, 34, 56, 78, 90, 123, 456, 789, 1234, 5678, 12345] a.append('A') # 加入一個元素到尾端,會直接改變原本的串列 print(a) a.extend(['B', 'C']) # 把另一個 list 從尾端接上去,會直接改變原本的串列 print(a) a = a + ['D', E''] # 也可以用加法運算來結合兩個 list print(a) a = ['F', 'G'] + a print(a) a.insert(3, 'H') # 在指定的位置插入元素,會直接改變原本的串列 print(a) x = a.pop() # 刪除最後一個元素,並回傳被刪除的元素 print(x, a) x = a.pop(3) # 刪除指定位置的元素,並回傳被刪除的元素 print(x, a) del a[3] # 刪除指定位置的元素,不回傳 print(a) del a[3:5] # 刪除指定位置的多個元素,不回傳 print(a)串列反轉的方法如下:
a = [12, 34, 12345, 56, 78, 90, 123, 1234, 5678, 456, 789] a.reverse() # 反轉,會直接修改原本的串列 print(a) b = a[::-1] # 也可以反轉,不過不是修改原本的串列,而是產生一個新的 print(b)