將重複項合併到列表列表中


本文將探討 Python 列表的挑戰——一種極其靈活的資料結構,能夠在處理列表巢狀列表(其中可能存在多個重複項)時儲存各種資訊,重複項很可能出現。因此,必須存在一個 Python 式的解決方案來刪除重複的子列表,以確保主列表中的每個子列表都是唯一的。在本文中,我們將說明如何使用不同的方法以及詳細的示例,將重複項合併到列表列表中。

使用 for 迴圈將重複項合併到列表列表中

程式碼解釋和設計步驟 -

  • 步驟 1 - 在 Anaconda 提示符中開啟 Jupyter Notebook,並在其單元格中開始編寫程式碼。

  • 步驟 2 - 在 Python 中,我們有一個包含重複項的子列表的無序列表;我們的目標是刪除這些重複項,以便我們主列表中的每個子列表都只有唯一的子列表。

  • 步驟 3 - 建立一個名為 ‘merge_dups()’ 的函式,它接受一個輸入列表,處理它以刪除重複的子列表,並返回一個沒有重複項的輸出列表。

  • 步驟 4 - 在此函式中,我們建立一個名為 ‘output_list’ 的空列表;在檢查是否存在重複項後,我們使用此空間來存放來自輸入列表的子列表。

  • 步驟 5 - 接下來,我們建立一個 ‘for’ 迴圈來遍歷輸入列表中的每個子列表,使此步驟對於單獨檢測每個子列表中的潛在重複項至關重要。

  • 步驟 6 - 在此 迴圈 中,一個 if 語句檢查我們當前正在檢視的子列表是否已出現在 ‘output_list’ 中,或者是否需要使用 ‘append()’ 方法新增;否則,我們只需繼續前進,直到出現另一個子列表。

  • 步驟 7 - 在此迴圈中,一個 ‘if’ 語句檢查我們當前正在檢視的子列表是否已出現在 ‘output_list’ 中,或者是否需要使用 ‘append()’ 方法新增;否則,我們只需繼續前進,直到出現另一個子列表。

  • 步驟 8 - 一旦此函式處理了其 ‘input list’ 中的每個子列表,‘output_list’ 應該只包含來自該輸入列表的唯一子列表,並且任何重複項都應該已從其中刪除。

  • 步驟 9 - 我們 Python 程式碼的核心是 ‘my_list’ - 一個包含重複子列表的空 ‘測試列表’,我們希望透過清理來清除它們。這將作為我們要清理的目標列表。

  • 步驟 10 - 接下來,在將結果變數賦值回來以方便將來程式碼重構之前,對 ‘my_list’ 呼叫 ‘merge_dups()’。由於我們的函式實際上並沒有更改原始列表,而是從頭開始生成一個列表,為了使我們的程式碼保持簡潔,我們重用其初始變數,而不是進一步更改其內容。

  • 步驟 11 - 最後,我們列印 ‘my_list’ 作為我們函式的輸出,以驗證其結果。所有子列表都應該是唯一的,並且在其中任何地方都不應該出現重複項。

示例 1

將重複項合併到列表列表中的程式碼 -

def merge_dups(input_list):
   output_list = []
   for each_sublist in input_list:
      if each_sublist not in output_list:
         output_list.append(each_sublist)
   return output_list

my_list = [[3, 10], [8, 2], [3, 10], [15, 6], [3, 17], [7, 8], [3,10], [15,6]]
my_list = merge_dups(my_list)
print(my_list)

輸出

[[3, 10], [8, 2], [15, 6], [3, 17], [7, 8]]

使用內建 Python 函式和資料型別將重複項合併到列表列表中

在本文中,我們將使用替代方法來解決這個問題。目標將保持不變,即透過利用 Python 的內建資料型別和功能比以前更有效地從我們的主列表中消除重複的子列表。

程式碼解釋和設計步驟 -

  • 步驟 1 - 在 Anaconda 提示符中開啟 Jupyter Notebook,並在其單元格中開始編寫程式碼。

  • 步驟 2 - 建立函式 - 建立我們的函式 ‘remove_duplicates’,它接受作為其輸入資料來源一個可能包含重複子列表的列表 (input_list)

  • 步驟 3 - 將子列表轉換為元組 - 此函式首先對 ‘input_list’ 中的每個元素應用 ‘map()'s 元組函式;有效地將每個子列表轉換為其相應的元組。

  • 步驟 4 - 利用集合消除重複項 - 接下來,我們從元組列表建立 Python 集合;由於只有唯一元素才能放入其中,因此在建立此 ‘unique_tuple_set’ 時,重複的元組將自動被消除,從而導致其成員 (unique_tuple_set) 中只包含不同的元素。

  • 步驟 5 - 將元組轉換回列表 - 一旦我們建立了唯一的元組集合,下一步應該是使用列表推導式將每個元組轉換回列表,列表推導式是一個迭代器,它將列表函式應用回我們集合中的每個唯一元組,以便轉換回列表。

  • 步驟 6 - 返回最終列表 - 一旦所有重複項都被刪除並轉換回其適當的格式 (列表列表),此函式將返回唯一列表作為結果。

  • 步驟 7 - 使用 - 使用此函式,我們現在可以將其用於任何列表以消除重複的子列表,如這裡所示,透過建立具有重複項的 ‘my_list’,使用它作為引數呼叫我們的函式 ‘remove_duplicates()’,並在呼叫 ‘delete_all()’ 使用它作為第一個引數後,用其輸出列表覆蓋 ‘my_list’,最終列印 ‘my_list’ 以驗證所有重複項都已成功消除。

示例 2

使用內建函式和資料型別將重複項合併到列表列表中的程式碼 -

def remove_duplicates(input_list):
   tuple_list = map(tuple, input_list)
   unique_tuple_set = set(tuple_list)
   unique_list = [list(t) for t in unique_tuple_set]
   return unique_list
my_list = [[3, 10], [8, 2], [3, 10], [15, 6], [3, 17], [7, 8], [3,10], [15,6]]
my_list = remove_duplicates(my_list)
print(my_list)

輸出

[[3, 17], [3, 10], [15, 6], [8, 2], [7, 8]]

結論

本文使用兩個不同方法的示例,展示瞭如何使用 Python 語言將重複項合併到列表列表中。透過理解和利用集合,我們能夠迅速找到有效的答案。

更新於: 2023年10月18日

126 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告