Python-删除列表中重复次数少于 k 次的元素

pythonserver side programmingprogramming

简介

在当今蓬勃发展的世界中,数据是极为宝贵的东西。数据非常强大,因此引入了许多技术,以确保这些数据的安全。在数据领域,数据处理也扮演着重要的角色之一,即过滤掉不必要的数据并收集所需的数据以供进一步使用和对其进行操作。一种常见做法是从列表中删除重复次数少于特定次数(表示为"k")的元素。本文旨在为您提供上述主题的流畅且丰富的上下文含义。

删除列表中重复次数少于 k 次的元素

定义

这里,要解决的问题是删除给定列表中频率少于"k"次的元素。"k"可以是任意数字。因此,我们假设列表中有'n'个元素,并且我们必须删除所有出现次数少于'k'次的元素。

算法

  • 步骤 1:首先,创建一个空字典或计数器对象,然后存储每个元素的频率。

  • 步骤 2:每次迭代元素时,更新字典或计数器对象中的元素频率

  • 步骤 3:使用列表推导创建一个新列表,仅存储出现次数超过指定 k 次的元素。

  • 步骤 4:将新列表返回到输出。

  • 步骤 5:完成。

方法

  • 方法 1− 使用字典和列表推导式。

  • 方法 2− 使用集合模块中的计数器

方法 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 ("输出列表:",result)

输出

输出列表:[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"循环迭代输入列表中的每个元素

  • 在此循环中,检查元素是否已在字典中,将其加一;否则,我们将元素添加到字典并将其值赋为一。

  • 一旦元素通过循环,我们现在就有了字典中每个元素的出现次数,并将其命名为"element_occurence"。

  • 现在,我们使用列表推导创建一个 new_list,并仅包含那些出现次数大于或等于"k"值的元素。

  • 然后返回此 new_list,最后我们打印输出列表。

  • 在输出列表中,我们只有频率在 original_list 中至少为三次的元素。所有其他出现次数少于或等于三次的元素都将从列表中删除。

方法 2:使用集合模块中的计数器

示例

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 ("输出列表:",result)

输出

输出列表:[8, 8, 6, 6, 8, 8, 4, 6, 4, 4, 2, 2, 2]

解释

  • 首先,我们创建一个动态列表,并在其中插入一些重复的元素,这样我们就可以清楚地看到输入列表和输出列表之间的区别。

  • 我们将"k"的值初始化为 3。

  • 为了计算列表中每个元素的频率,我们导入了来自 collection 模块的 Counter 类。

  • 我们定义一个名为"remove"的函数,它有两个参数。第一个参数用于 original_list,第二个参数用于 k 值。

  • 为了计算元素的出现次数,我们创建了一个名为"element_counter"的计数器对象。这里我们将 original_list 作为参数传递,以便它可以自动计算每个元素的频率

  • 现在,我们使用列表推导创建了名为"new_list"的新列表,我们将只获取出现次数等于或大于"k"值的元素,通过迭代并检查每个元素的计数器对象"element_counter"中的频率。

  • 最后,将此 new_list 返回到结果中,然后我们打印输出列表。

  • 输出列表包含在输入列表中至少出现三次的元素。并且,出现次数少于指定"k"值的元素将从列表中删除。

  • 使用 collections 模块中的 Counter 类简化了计数过程,使代码简洁易读。

结论

数据分析中常见的预处理活动是从列表中删除出现次数少于 k 次的元素。在本文中,我们研究了问题陈述、代码的语法和说明、简单的五步方法以及两种带有可执行代码示例和输出的技术。

我们可以通过使用字典或 collections 模块中的 Counter 类来有效地计算列表中元素的出现次数。我们使用获取的频率信息生成一个新列表,该列表仅包含频率大于或等于设置的最小值 k 的元素。

无论您选择第一种方法(使用字典)还是第二种方法(使用 Counter 类),两者都会有效地从给定列表中删除出现次数少于 k 次的元素,从而为将来的分析提供更干净、更准确的数据。


相关文章


有用资源