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 次的元素,從而為將來的分析提供更乾淨、更準確的資料。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP