Python - 刪除列表中重複次數少於 k 次的元素


引言

在當今飛速發展的世界中,資料是最寶貴的財富之一。資料的力量非常強大,因此出現了許多旨在保護資料的技術。在資料領域,資料處理也扮演著重要的角色,它負責過濾掉不必要的資料,並收集所需的資料以供進一步使用和執行操作。一個常見的問題是從列表中刪除重複次數少於特定次數(表示為“k”)的元素。本文旨在為您提供關於上述主題的清晰且內容豐富的解釋。

刪除列表中重複次數少於 k 次的元素

定義

這裡,需要解決的問題是從給定的列表中刪除頻率少於“k”次的元素。“k”可以是任何數字。因此,假設列表中有“n”個元素,我們需要刪除所有出現次數少於“k”次的元素。

演算法

  • 步驟 1:首先,建立一個空字典或計數器物件,然後儲存每個元素的頻率。

  • 步驟 2:每次遍歷元素時,更新字典或計數器物件中元素的頻率。

  • 步驟 3:使用列表推導式建立一個新列表,僅儲存出現次數超過指定“k”次數的元素。

  • 步驟 4:將新列表返回到輸出。

  • 步驟 5:完成。

方法

  • 方法 1 - 使用字典和列表推導式。

  • 方法 2 - 使用 collections 模組中的 Counter。

方法 1 - 使用字典和列表推導式。

示例

def remove (original_list, k):
   element_occurence= {}
   for element in original_list:
      if element in element_occurence:
         element_occurence[element]+=1
      else:
         element_occurence[element]= 1
   new_list= [element for element in original_list if 
         element_occurence[element]>=k]
   return new_list
i_list= [1,0,1,1,2,3,2,2,3,3,4,5,4,4,4,5]
k_value= 3
result= remove (i_list, k_value)
print ("Output list:",result)

輸出

Output list: [1, 1, 1, 2, 3, 2, 2, 3, 3, 4, 4, 4, 4]

解釋

  • 我們建立一個動態列表,其中包含 n 個元素,這裡我們將其命名為 i_list 併為其分配值。

  • 然後我們初始化 k 值,在本例中,我們將其命名為 k_value 並將其初始化為 3。

  • 我們定義一個名為“remove”的函式,它有兩個引數,第一個是已建立的 original_list,第二個是 k 值。

  • 在此函式中,我們首先建立一個空字典以計算元素的出現次數。

  • 使用“for”迴圈迭代輸入列表中的每個元素。

  • 在此迴圈中,檢查元素是否已存在於字典中,如果存在,則將其值加 1;否則,將元素新增到字典中並將值設定為 1。

  • 遍歷完所有元素後,我們現在在名為“element_occurence”的字典中獲得了每個元素的出現次數。

  • 現在,我們使用列表推導式建立一個名為 new_list 的新列表,並僅包含出現次數大於或等於“k”值的元素。

  • 然後返回此 new_list,最後列印輸出列表。

  • 在輸出列表中,我們只有那些在 original_list 中頻率至少為 3 次的元素。所有其他頻率小於 3 次的元素都已從列表中刪除。

方法 2:使用 collections 模組中的 Counter

示例

from collections import Counter
def remove(original_list,k):
   element_counter= Counter(original_list)
   new_list= [element for element in original_list if 
         element_counter[element] >=k]
   return new_list
i_list= [8,8,6,6,8,8,4,6,4,4,33,33,1,2,1,2,2,0]
k_value= 3
result= remove(i_list,k_value)
print ("Output list:",result)

輸出

Output list: [8, 8, 6, 6, 8, 8, 4, 6, 4, 4, 2, 2, 2]

解釋

  • 首先,我們建立一個動態列表並在其中插入一些重複的元素,以便我們可以清楚地看到輸入列表和輸出列表之間的差異。

  • 我們將“k”的值初始化為 3。

  • 為了計算列表中每個元素的頻率,我們匯入來自 collections 模組的 Counter 類。

  • 我們定義一個名為“remove”的函式,它有兩個引數。第一個引數用於 original_list,第二個引數用於 k 值。

  • 為了計算元素的出現次數,我們建立一個名為“element_counter”的計數器物件。這裡我們將 original_list 作為引數傳遞,以便它可以自動計算每個元素的頻率。

  • 現在,我們使用列表推導式建立一個名為“new_list”的新列表,我們將僅獲取出現次數等於或大於“k”值的元素,方法是迭代並檢查名為“element_counter”的計數器物件中每個元素的頻率。

  • 最後,此 new_list 將返回到結果,我們列印輸出列表。

  • 輸出列表包含在輸入列表中至少出現 3 次的元素。並且出現次數少於指定“k”值的元素已從列表中刪除。

  • 使用來自 collections 模組的 Counter 類簡化了計數過程,使程式碼簡潔易讀。

結論

在資料分析中,一個常見的預處理操作是從列表中刪除出現次數少於 k 次的元素。在這篇文章中,我們探討了問題陳述、程式碼的語法和解釋、一個簡單的五步方法以及兩種帶可執行程式碼示例和輸出的技術。

我們可以透過使用字典或來自 collections 模組的 Counter 類來有效地計算列表中元素的出現次數。我們使用獲得的頻率資訊生成一個新列表,該列表僅包含頻率大於或等於設定的最小值 k 的元素。

無論您選擇第一種方法(使用字典)還是第二種方法(使用 Counter 類),這兩種方法都能有效地從給定列表中刪除出現次數少於 k 次的元素,從而為將來的分析提供更乾淨、更準確的資料。

更新於: 2023年10月9日

112 次檢視

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告

© . All rights reserved.