python中列表如何去重复

python中列表如何去重复

作者:Joshua Lee发布时间:2026-01-06阅读时长:0 分钟阅读次数:13

用户关注问题

Q
有哪些方法可以在Python中移除列表重复元素?

我有一个包含重复元素的Python列表,想要去除重复项,保持唯一元素,有哪些常用的实现方法?

A

多种方法实现Python列表去重

Python列表去重主要可以通过转换为集合(set)实现,因为集合本身不允许重复元素。示例代码:

my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))
print(unique_list)

不过,使用集合会打乱原列表元素的顺序。如果需保持顺序,则可以使用字典的特性(Python 3.7及以后版本的字典是有序的):

my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(dict.fromkeys(my_list))
print(unique_list)

还可以用循环遍历结合辅助列表或集合来实现去重。

Q
如何去除列表重复元素并保持原有顺序?

使用普通的set()会打乱列表元素顺序,想知道在Python中有没有办法去重复的同时保证元素顺序不变?

A

利用dict.fromkeys()保持顺序去重

Python 3.7及以后版本,字典保持插入顺序,可以利用dict.fromkeys()实现顺序去重,示例:

my_list = [3, 1, 2, 3, 4, 1, 5]
unique_list = list(dict.fromkeys(my_list))
print(unique_list)  # 输出: [3, 1, 2, 4, 5]

这种方法可以快速高效地去除重复元素而不是打乱列表顺序。

Q
使用循环和条件判断来去重复,怎么写代码才高效?

能否通过for循环和判断条件来实现Python列表去重?如何避免效率低下?

A

循环配合辅助集合实现高效去重

用for循环结合辅助集合避免重复元素加入结果列表。示例代码:

def unique_list(seq):
    seen = set()
    result = []
    for item in seq:
        if item not in seen:
            seen.add(item)
            result.append(item)
    return result

my_list = [1, 2, 2, 3, 4, 4, 5]
print(unique_list(my_list))

这种方法避免了使用list.count等效率低的操作,适合较大列表去重且保持元素顺序。