iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
0

昨天已簡單介紹List跟Tuple,不過串列在Python中的應用非常廣泛,有許多進階方法可對串列進行操作,以滿足各種需求。這邊先提出幾個常用的方法做說明:

以append或insert方法增加串列元素

在設定好串列初始值後,如果要增加串列元素,不能直接用索引的方式設定,要以append或insert方法去新增元素。append方法是將元素加在串列最後面,如:

list = [1,2,3,4,5,6]
list.append(10)
print(list)

[1, 2, 3, 4, 5, 6, 10]

insert方法是將元素放在指定的位置,原來的資料會自動往後退。

list = [1,2,3,4,5,6]
list.insert(4,10)   #第一格為索引值,第二為元素
print(list)

[1, 2, 3, 4, 10, 5, 6]

append或extend方法的區別

講到append就會想到extend方法,他們兩個很像都是將資料加在串列最後面,不同處在於append方法的參數可以是元素也能是串列,它會把串列當成一個元素放進去,如:

list = [1,2,3,4,5,6]
list.append(10)
list.append([11,12])  #串列直接放
print(list)

[1, 2, 3, 4, 5, 6, 10, [11, 12]]

extend方法只能加入串列,不可以是元素。它會把串列中的元素做為個別元素加進串列裡。如:

list = [1,2,3,4,5,6]
list.extend(10)      # 錯誤
list.extend([11,12])
print(list)

[1, 2, 3, 4, 5, 6, 11, 12]

remove與pop方法

有新增就有刪除,這邊先講解這兩個。
remove方法會從第一項資料開始,找到指定資料,然後將它刪除。如果有多筆相同的資料,只會刪除第一個找到的資料。如:

list = [1,2,3,4,5,3,6]
list.remove(3)
print(list)

[1, 2, 4, 5, 3, 6]

pop方法的功能是由串列中取出元素,同時串列會將該元素移除。pop方法可以有參數或是沒有,如果沒有就會拿掉最後一個元素;有參數,就會依照索引值去取出。如:

list = [1,2,3,4,5,6]

list.pop()
print(list)

[1, 2, 3, 4, 5]

list.pop(3)
print(list)

[1, 2, 3, 5, 6]

Slice技巧

還有一個我覺得特別需要注意的是Slice技巧。Slice的目的是讓我們很方便地從字串中,複製出想要的那一段資料,那麼它的格式如下:

串列名稱[索引起始值:索引結束值:索引值改變量]

主要是要設定開始的位置、結束的位置跟資料的間隔,三個都能留空白,它就會產生預設值第一項或最後一項,同時正負整數也可以放,就看你的需求是甚麼。例子如下:

list = [1,2,3,4,5,6]

list2 = list[:]       #起始、結束、改變量都不指定,複製全部
[1, 2, 3, 4, 5, 6]

list2 = list[::2]     #第一項開始,間隔一個
[1, 3, 5]

list2 = list[::-2]    #最後一項開始,間隔一個
[6, 4, 2]

list2 = list[:2]      #前兩項資料
[1, 2]

list2 = list[-2:]     #後兩項資料
[5, 6]

list2 = list[2:-2]    #按照索引值取
[3, 4]

那麼上述說明對於Tuple來說都不適用(Slice可以),因為Tuple不能改變元素值,所以會改變到元素或個數的方法都不能使用歐~


下表列出串列的常用方法,以供未來參考:
(表中 list1=[1,2,3,4,5,6],x=[8,9],n、n1、n2、n3為整數)

方法 意義 範例 範例結果
list1 * n 串列重複n次 list2=list1 * 2 list2=[1,2,3,4,5,6,1,2,3,4,5,6]
list1[n1:n2] 取出n1到n2-1元素 list2=list1[1:4] list2=[2,3,4]
list1[n1:n2:n3] 同上,取出間隔為n3 list2=list1[1:4:2] list2=[2,4]
del list1[n1:n2] 刪除n1到n2-1元素 del list1[1:4] list1=[1,5,6]
del list1[n1:n2:n3] 同上,刪除間隔為n3 del list1[1:4:2] list1=[1,3,5,6]
n=len(list1) 取得串列元素數目 n=len(list1) n=6
n=min(list1) 取得元素最小值 n=min(list1) n=1
n=max(list1) 取得元素最大值 n=max(list1) n=6
n=list1.index(n1) 第1次n1元素的索引值 n=list1.index(3) n=2
n=list1.count(n1) n1元素出現的次數 n=list1.count(3) n=1
list1.append(n1) 將n1作為元素加在串列最後 list1.append(8) list1=[1,2,3,4,5,6,8]
list1.extend(x) 將x中元素逐一做為元素加在串列最後 list1.extend(x) list1=[1,2,3,4,5,6,8,9]
list1.insert(n,n1) 在位置n加入n1元素 list1.insert(3,8) list1=[1,2,3,8,4,5,6]
n=list1.pop() 取出最後元素並移除 n=list1.pop() n=6,list1=[1,2,3,4,5]
list1.remove(n1) 移除第1次的n1元素 list1.remove(3) list1=[1,2,4,5,6]
list1.reverse() 反轉串列順序 list1.reverse() list1=[6,5,4,3,2,1]
list1.sort() 將串列由小排到大 list1.sort() list1=[1,2,3,4,5,6]

參考資料

  • 書名-輕鬆學Python3 /孫宏明-編著
  • 書名-Python初學特訓班 /文淵閣工作室-編著

上一篇
Day08-串列List與元組Tuple
下一篇
Day10-字典 Dict
系列文
Python 30天學習日誌30

尚未有邦友留言

立即登入留言