当前位置: 首页 > 面试题库 >

用Python方法删除列表中的反向重复项

谭云瀚
2023-03-14
问题内容

我有一个配对列表:

[0, 1], [0, 4], [1, 0], [1, 4], [4, 0], [4, 1]

我想删除任何重复的地方

[a,b] == [b,a]

所以我们最后只是

[0, 1], [0, 4], [1, 4]

如果不是这种情况,我可以对反向对进行内部和外部循环检查,然后追加到列表中,但是我敢肯定,有更多的Python方式可以达到相同的结果。


问题答案:

如果您需要保留列表中元素的顺序,则可以使用sorted函数并使用以下方式设置理解map

lst = [0, 1], [0, 4], [1, 0], [1, 4], [4, 0], [4, 1]
data = {tuple(item) for item in map(sorted, lst)}
# {(0, 1), (0, 4), (1, 4)}

或根本map不像这样:

data = {tuple(sorted(item)) for item in lst}

另一种方法是使用一个frozenset如图所示这里但是请注意,如果您的列表中有不同的元素这只是工作。因为like
setfrozenset始终包含唯一值。因此,您最终将在子列表(丢失的数据)中获得唯一值,而这可能不是您想要的。

要输出列表,您始终可以list(map(list, result))仅在Python-3.0或更高版本中使用where结果是一组元组的情况。



 类似资料:
  • 本文向大家介绍python删除列表中重复记录的方法,包括了python删除列表中重复记录的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python删除列表中重复记录的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 问题内容: 我在Python中有一个列表列表: 我想从中删除重复的元素。如果这是正常列表,而不是我可以使用的列表set。但不幸的是,该列表不可散列,因此无法建立一组列表。只有元组。因此,我可以将所有列表转换为元组,然后使用set并返回列表。但这不是很快。 如何以最有效的方式做到这一点? 上面的结果应为: 我不在乎保留订单。 注意:这个问题很相似,但不是我所需要的。搜索了SO,但没有找到确切的重复项

  • 问题内容: 我想从列表列表中删除所有重复列表。 所以我有一个这样的清单清单。 我希望有: 我不知道该怎么办。 谢谢 问题答案: 您可以使用一组: 或者,如果您更喜欢列表推导/生成器: 最后,如果顺序很重要,则可以始终对b进行排序:

  • 问题内容: 如果想基于每个嵌套列表的第一个元素评估重复项,谁能提出一个好的解决方案从嵌套列表中删除重复项? 主列表如下所示: 如果已经在第一位置出现了另一个具有相同元素的列表,那么我想删除该列表并得到以下结果: 您可以建议一种算法来实现此目标吗? 问题答案: 您是否关心保留订单/删除了哪些重复项?如果不是,则: 会做的。如果您想保留订单并想保留第一个订单,则:

  • 假设我们有一个函数,它返回100万个长度为30的整数向量,每个向量的条目都很小(比如-100到100之间)。进一步假设输出只有大约30000个唯一向量,其余是重复的。检索唯一输出向量列表的良好数据结构和算法是什么?优选地,当3%的唯一向量的比例大致恒定时,该解决方案应缩放良好。 这个问题主要是关于数据结构的,但我计划使用 STL 在 C 中实现它,所以也欢迎任何关于实现的提示。 朴素算法是存储已知

  • 问题内容: 我有一个对象列表,并且有一个充满记录的数据库表。我的对象列表具有标题属性,我想从列表中删除所有具有重复标题的对象(保留原始对象)。 然后,我要检查我的对象列表是否在数据库中有任何记录的重复项,如果是,请在将它们添加到数据库之前从列表中删除这些项目。 我已经看到了从这样的列表中删除重复项的解决方案:,但是我不确定如何使用对象列表来做到这一点? 我也需要维护对象列表的顺序。我也在想,也许我