困难
技术面试0 次浏览

请用 Python 编写一个函数,实现对一个列表中的元素进行去重,并返回去重后的列表,要求保持元素的原有顺序。

测试工程师
Python列表去重编码能力

答题要点

以下是一个用 Python 实现对列表元素去重并保持原有顺序的函数。 python def remove_duplicates(lst): result = [] for item in lst: if item not in result: result.append(item) return result 在这个函数中,我们定义了一个空列表 `result`,用于存储去重后的元素。然后遍历输入的列表 `lst`,对于每个元素,检查它是否已经存在于 `result` 列表中。如果不存在,就将其添加到 `result` 列表中。最后返回 `result` 列表。这种方法的时间复杂度是 $O(n^2)$,因为对于每个元素,都需要在 `result` 列表中进行一次查找操作。如果列表元素较多,性能可能会受到影响。为了提高性能,可以使用 Python 的 `OrderedDict` 来实现,代码如下: python from collections import OrderedDict def remove_duplicates_optimized(lst): return list(OrderedDict.fromkeys(lst)) `OrderedDict` 是 Python 中的有序字典,`fromkeys` 方法可以根据列表元素创建一个有序字典,其中元素作为键,值为 `None`。由于字典的键是唯一的,这样就实现了去重。最后将字典的键转换为列表并返回。这种方法的时间复杂度是 $O(n)$,性能更优。