删除没有set的重复项,no for循环,维护顺序并更新原始列表

时间:2017-01-13 01:33:20

标签: python-3.x duplicates

好的,所以我必须从列表中删除重复项并同时维护订单。但是,有一些条件,例如我不允许使用set或for循环。此外,当函数不能返回新列表但更新原始列表时。我有以下代码,但它只能部分工作,是的,我知道我只检查一次,但我不确定如何继续进行。

def clean_list(values):
    i = len(values)-1
    while i > 0:
        if values[i] ==  values[i-1]:
            values.pop(i)
        i -= 1
    return values

values = [1, 2, 0, 1, 4, 1, 1, 2, 2, 5, 4, 3, 1, 3, 3, 4, 2, 4, 3, 1, 3, 0, 3, 0, 0]
new_values = clean_list(values)
print(new_values)

给我结果:

 [1, 2, 0, 1, 4, 1, 2, 5, 4, 3, 1, 3, 4, 2, 4, 3, 1, 3, 0, 3, 0]

由于

1 个答案:

答案 0 :(得分:0)

尝试以下方法。

使用两个while循环,第一个将获得您的唯一项目,第二个将在列表的其余部分搜索任何其他匹配项目并删除它们,维持顺序。

{{1}}

更新:改进功能更快,因为最坏情况第一个是O(n2)

{{1}}