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

从列表中删除对某些项目重复的列表

芮瑾瑜
2023-03-14
问题内容

我正在尝试从具有相同的第一项和第三项但仅保留第一项的列表中删除列表。示例列表和输出:

li=[ [2,4,5], [1,3,5], [1,6,5] ]
output_list = [ [2,4,5], [1,3,5] ]

由于原始列表包含数百万个列表,因此我编写的代码需要很长时间才能执行。

b_li = []
output_list = []
for x in li:
    s = [ x[0], x[2] ]
    if s not in b_li:
        b_li.append(s)
        output_list.append(x)

如何改善代码?提前致谢。


问题答案:

改进的版本:

b_li = set()
output_list = []
b_li_add = b_li.add
output_list_append = output_list.append
for x in li:
    s = (x[0], x[2])
    if s not in b_li:
        b_li_add(s)
        output_list_append(x)

更改为:

  • 使用set()b_li,这使得查找更快。
  • s成元组,因为没有必要存储唯一的第一和第三元素列表。
  • 减少的函数查找也可以加快代码的速度。


 类似资料:
  • 我对Mongo的Webservice调用返回以下JSON。我需要迭代这个JSON值并删除Item-product_语言,因为它包含NULL/空字符串。 你对怎么做有什么想法吗? Python 3.4版本。 { }

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

  • 我下面有一个类,想删除包含同名的重复人,如何使用Java8 Lambda,预计列表包含下面的p1、p3。

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

  • 问题内容: 在遍历列表时,我想根据条件删除列表中的项。请参见下面的代码。 这给了我一个例外。 如何才能做到这一点? 问题答案: 您需要使用和调用上,而不是使用循环。

  • 问题内容: 如果嵌套字典前面没有键,我现在可以删除重复项。我可以使用此功能的字典列表的一个示例是: 但是,我希望能够根据键和该词典中关联的所有值删除重复项。因此,如果内部有相同的键但值不同,则我不想删除它,但是如果有完整的副本,则将其删除。 我该怎么做呢?谢谢。 问题答案: 要从字典列表中删除重复项,请执行以下操作: