使用python迭代时按索引删除列表元素

时间:2016-07-28 16:14:41

标签: python list

在列表中,我有要删除的重复元素。

以下代码无效:

注意: temp包含我要删除的元素的索引列表。

x是我的清单。

temp = self.list_duplicates(x)
for index in tmp:
   del x[index] 

4 个答案:

答案 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]