iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
0
自我挑戰組

Python 30天學習日誌系列 第 9

Day09-List的進階操作與用法

  • 分享至 

  • xImage
  •  

昨天已簡單介紹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
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言