将重复项合并到列表列表中
本文将探讨 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 语言将重复项合并到列表列表中。通过理解和利用集合,我们能够迅速找到有效的答案。