好的,所以我必须从列表中删除重复项并同时维护订单。但是,有一些条件,例如我不允许使用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]
由于
答案 0 :(得分:0)
尝试以下方法。
使用两个while循环,第一个将获得您的唯一项目,第二个将在列表的其余部分搜索任何其他匹配项目并删除它们,维持顺序。
{{1}}
更新:改进功能更快,因为最坏情况第一个是O(n2)
{{1}}