在 Python 中清除列表

Rayven Esplanada 2023年1月30日 2021年3月21日
  1. 使用 clear() 清除 Python 中的列表
  2. 在 Python 中設定一個空的列表值來清除一個列表
  3. 在 Python 中使用 del 和切片運算子:清除列表
  4. 將整個列表與 0 相乘以清除 Python 中的列表
在 Python 中清除列表

本教程將演示清除 Python 列表的不同方法。

使用 clear() 清除 Python 中的列表

在 Python 中清除列表的最簡單,最明顯的方法是使用 clear() 方法,這是 Python 列表中的內建方法。

例如,使用整數值初始化列表,然後使用 clear() 函式刪除所有值。

lst = [1, 6, 11, 16]
print(lst)
lst.clear()
print(lst)

輸出:

[1, 6, 11, 16]
[]
註釋
這是清除 Python 中的列表的快速簡便的解決方案,但它只相容 Python 3.3 及以上版本。

在 Python 中設定一個空的列表值來清除一個列表

清除現有列表變數的另一種方法是使用一對空的方括號 [] 為該變數設定一個空列表。

lst = [1, 6, 11, 16]
print(lst)

lst = []
print(lst)

輸出:

[1, 6, 11, 16]
[]

儘管這樣做也可以快速清除列表,但這不會從記憶體中刪除列表的值。而是建立一個列表的新例項,並指向新建立的例項。

如果沒有其他變數指向列表變數的先前值,則這些變數將不可訪問並且將用於垃圾回收。

如果我們使兩個變數指向同一列表,並在之後將其中一個變數設定為空列表,則可以清楚地看出這種情況。

lst = [1, 6, 11, 16]
lst2 = lst
print(lst)
print(lst2)

lst = []
print(lst)
print(lst2)

輸出:

[1, 6, 11, 16]
[1, 6, 11, 16]
[]
[1, 6, 11, 16]

第二個列表 lst2 被設定為 lst 的值,但是即使在將新的 lst 值設定為空列表之後,列表 lst2 仍然保留以前的舊值。在這種情況下,先前的值不適合進行垃圾回收,因為仍然有指向它的變數。

在 Python 中使用 del 和切片運算子:清除列表

Python 關鍵字 del 用於完全刪除記憶體中的物件及其引用。del 關鍵字用於刪除 Python 物件,可迭代物件,列表的一部分等。

Python 中的冒號運算子:是用於將陣列切成可接受兩個整數引數的部分的運算子。

:操作符則是用來獲取列表的實際引用進行刪除。

lst = [1, 6, 11, 16]
lst2 = lst
print(lst)
print(lst2)

del lst[:]
print(lst)
print(lst2)

另一個不使用 del 關鍵字即可完成此操作的解決方案是將列表設定為空列表,但使用:運算子將以前的引用替換為空列表。

lst = [1, 6, 11, 16]
lst2 = lst
print(lst)
print(lst2)

lst[:] = []
print(lst)
print(lst2)

兩種解決方案的輸出如下:

[1, 6, 11, 16]
[1, 6, 11, 16]
[]
[]

從前面的示例中可以注意到,將現有列表變數設定為空列表實際上並不會刪除先前的值。這個解決方案將完全刪除之前的值,即使其他變數指向主列表中相同的值引用。

將整個列表與 0 相乘以清除 Python 中的列表

清除列表的最快方法是將整個列表乘以 0。將列表變數本身與 0 相乘將清除列表並清除其先前在記憶體中的引用。

lst = [1, 6, 11, 16]
lst2 = lst
print(lst)
print(lst2)

lst *= 0
print(lst)
print(lst2)

輸出:

[1, 6, 11, 16]
[1, 6, 11, 16]
[]
[]

在所有提到的解決方案中,此方法是執行最快的解決方案。

總之,清除列表的最明顯方法是在列表中使用內建的 clear() 函式,儘管執行最快的解決方案是將列表變數與值 0 相乘。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相關文章 - Python List