【Python 基礎語法 #2】python list 清除, 移除內容元素 remove, pop, del, clear 相關用法整理

前言

有時候我們會需要清除 list 裡面的特定內容,這篇有 list 清除相關內容的總整理,
包含 remove, pop, del, clear 的相關用法。

移除特定元素 list.remove(element)

list = ['cat', 'dog', 'dog', 'pig', 'dog']
list.remove('dog')
  • 輸出結果為: ['cat', 'dog', 'pig', 'dog'] > 特別注意我們只會清除最先找到的「第一個」相符元素
  • 如果有要完全清除該元素的需求,可以先使用搜尋的方式:

    target = 'dog'
    list = ['cat', 'dog', 'dog', 'pig', 'dog']
    while(target in list):
        list.remove(target)
    
    • 輸出結果為: [‘cat’, ‘pig’]

    移除特定位置 list.pop(index)

    list = ['cat', 'dog', 'dog', 'pig', 'dog']
    list.pop(3)
    
  • 輸出結果為: ['cat', 'dog', 'dog', 'dog'] 依照 0, 1, 2, 3, 4 的順序,我們移除了第3個欄位的元素。
  • 其他 pop 常見用法 - pop(0) 移除第一個欄位,queue 常用

    queue 的定義是先進先出,也就是說「先進來」的會優先拿掉,
    我們可以結合 append() 與 pop(0) 的這兩個功能,
    就能夠簡單實作出一個 queue。

    其他 pop 常見用法 - pop() 移除最後一個欄位 (等於 pop(-1)),stack 常用

    stack 的定義是先進後出,也就是說「後進來」的會優先拿掉,
    我們可以結合 append() 與 pop() 或 pop(-1) 的這兩個功能,
    就能夠簡單實作出一個 stack。

    移除特定位置(進階) del list[index]

    del 的用法與 pop 類似,不同的地方在於 del 不回傳值而是直接修改原 list,

    list = ['cat', 'dog', 'dog', 'pig', 'dog']
    del list[3]
    
  • 輸出結果為: ['cat', 'dog', 'dog', 'dog'] 依照 0, 1, 2, 3, 4 的順序,我們移除了第3個欄位的元素。 不同於pop的地方在於使用 del,我們不需要用一個參數去等於這個函數的結果。
  • del 進階用法,比 pop 更靈活的刪除特定範圍位置

    del 有 pop 做不到的功能,就是能夠直接指定欄位進行刪除,

    • 例如:del list[0:2] ,刪除位置 0, 1 的元素
    list = ['cat', 'dog', 'dog', 'pig', 'dog']
    del list[0:2]
    
    • 輸出結果為: [‘dog’, ‘pig’, ‘dog’]

    • 例如:del list[:] ,等於直接刪除全部元素,用法等同於 clear()

    list = ['cat', 'dog', 'dog', 'pig', 'dog']
    del list[:]
    
    • 輸出結果為: []

    將 list 完全清空 list.clear()

    list = ['cat', 'dog', 'dog', 'pig', 'dog']
    list.clear()
    
  • 輸出結果為:[] 我們將 list 完全清空
  • Reference