在列表中,我有要删除的重复元素。
以下代码无效:
注意: temp包含我要删除的元素的索引列表。
x是我的清单。
temp = self.list_duplicates(x)
for index in tmp:
del x[index]
答案 0 :(得分:2)
构建一个具有理解力的新列表:
x = [element for (i,element) in enumerate(x) if i not in temp]
如果您只想删除重复项,即保留原件的一份副本,则有更好的方法:
from collections import OrderedDict
x = list(OrderedDict.fromkeys(x))
答案 1 :(得分:1)
x.pop(index)
将删除索引处的项目。但是,x = [x[i] for i in range(len(x)) if x[i] not in x[:i]]
会更快地删除重复项。
答案 2 :(得分:0)
您可以使用以下内容过滤列表:
修改:立即投放索引列表
x = list(filter(lambda item: x.index(item) not in temp, x))
答案 3 :(得分:0)
没有人解决问题的第一部分。因此,为了删除重复项目,明智地使用set()
,它会删除重复的项目并返回任意唯一项目列表。
lst = [1,1,2,3,4,4]
new_lst = list(set(lst))
print(lst)
它将以任意方式返回唯一的元素列表例如:[1,4,2,3]