技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

将重复项合并到列表列表

pythonserver side programmingprogramming

眼前的挑战是 Python 列表 - 一种非常灵活的数据结构,能够在处理列表中的列表(可能存在多个重复条目)时保存各种信息,重复是可能的。因此,必须存在一个 Pythonic 解决方案来删除重复的子列表,以确保主列表中的每个子列表都是唯一的。在本文中,我们将使用不同的方法通过详细示例说明如何将重复项合并到列表列表中。

使用 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 - 一旦此函数处理了其"输入列表"中的每个子列表,"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 prompt 中打开 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 语言将重复项合并到列表列表中。通过理解和利用这两个集合,我们能够快速得出有效的答案。


相关文章