首页 > 解决方案 > 如何使列表唯一并保持已消除项目的索引?

问题描述

我有两个清单。它们具有相同的大小和种类,彼此相关。我想让其中一个独一无二,并消除另一个列表中的相应元素。(所以我需要消除项目的索引)。假设我们总是保留第一个并消除其他相同的项目。

例子:

my_list=[['A','B','C'],['D','Q'],['O','W','S'],['D','Q'],['D','Q']]
sec_list=[[1,2,5],[3,4],[5,6,4],[7,8],[2,5]]

结果:

my_list=[['A','B','C'],['D','Q'],['O','W','S]]
sec_list=[[1,2,5],[3,4],[5,6,4]]

我做了什么:

我知道如何通过以下代码使列表元素唯一:

Uni=[]
[Uni.append(i) for i in my_list if i not in Uni]

但它没有给我删除第二个列表中相应项目的索引。我试过for循环:

index_remove=[]
for s,i in enumerate(my_list):
    for r,j in enumerate(my_list):
        if s!=r:
            if i==j:
                if s not in index_remove:
                    index_remove.append(s) 

但它给了我所有类似项目的索引。不是应该删除的那个。

标签: pythonlist

解决方案


用于zip()一起迭代两个列表。将元素附加到第一个结果时,也将相应的元素附加到第二个结果。

result1 = []
result2 = []
for my, sec in zip(my_list, sec_list):
    if my not in result1:
        result1.append(my)
        result2.append(sec)

推荐阅读