【发布时间】:2019-05-16 10:00:05
【问题描述】:
假设我们有一个列表,我们想要删除并发相同元素的重复数据
['a', 'b', 'b', 'a', 'b']
会变成
['a', 'b', 'a', 'b']
或其他
['a', 'b', 'c', 'c', 'a', 'b', 'b']
会变成
['a', 'b', 'c', 'a', 'b']
我想尽可能高效地做到这一点。
我的解决方案似乎很麻烦。使用枚举循环并添加要删除的索引位置,然后在执行循环后再次循环删除索引位置处的所有元素。
理想情况下,我希望避免完全循环,因为在生产中我将迭代一个非常长的包含许多元素的列表。
eg = ['a', 'b', 'c', 'c', 'a', 'b', 'b']
remove = []
for x in enumerate(eg[:-1]):
if x[1] == eg[x[0]+1]:
remove.append(x[0])
for index in sorted(remove, reverse=True):
del eg[index]
例如
['a', 'b', 'c', 'a', 'b']
【问题讨论】: