python列表去重的5种常见方法实例
Python 列表去重主要有以下五种常见方法,每种方法都有其适用场景和优缺点,现在我就详细介绍每一种方法,并附上示例代码以及相关注释。
- 使用set集合去重
集合(set)是一个无序不重复元素集,利用这一特性可以很容易地去除列表中的重复元素。
def deduplicate_with_set(lst):
return list(set(lst))
# 示例
original_list = [1, 2, 2, 3, 3, 3]
unique_list = deduplicate_with_set(original_list)
print(unique_list)
这种方法是最简单的,但它不会保留原始列表元素的顺序,并且仅适用于不可变且可哈希的元素。
- 使用字典去重
从Python 3.6开始,字典保持了插入顺序,因此可以用来去重且保留元素顺序。
def deduplicate_with_dict(lst):
return list(dict.fromkeys(lst))
# 示例
original_list = [1, 2, 2, 3, 3, 3]
unique_list = deduplicate_with_dict(original_list)
print(unique_list)
通过将列表元素作为字典的键并从中创建一个字典,我们可以保留元素的顺序并去除重复项。
- 使用列表推导式去重
列表推导式可以配合一个辅助集合来去重并保持元素顺序。
def deduplicate_with_comprehension(lst):
seen = set()
return [x for x in lst if not (x in seen or seen.add(x))]
# 示例
original_list = [1, 2, 2, 3, 3, 3]
unique_list = deduplicate_with_comprehension(original_list)
print(unique_list)
这种方法通过维护一个已见元素的集合并在列表推导式中过滤掉重复项。
- 使用for循环去重
可以通过for循环遍历原列表,组建一个新的列表来实现去重。
def deduplicate_with_loop(lst):
unique_list = []
for item in lst:
if item not in unique_list:
unique_list.append(item)
return unique_list
# 示例
original_list = [1, 2, 2, 3, 3, 3]
unique_list = deduplicate_with_loop(original_list)
print(unique_list)
这种方法不需要额外的库,逻辑简单明了,但在大列表中效率较低。
- 使用itertools库的groupby函数
itertools.groupby
函数可以连续重复元素分组,在此之前需要先将列表排序。
from itertools import groupby
def deduplicate_with_groupby(lst):
return [key for key, _ in groupby(sorted(lst))]
# 示例
original_list = [1, 2, 2, 3, 3, 3]
unique_list = deduplicate_with_groupby(original_list)
print(unique_list)
这种方法需要先对列表进行排序,然后才能应用groupby
函数,因此它不会保持除重复元素外的原始顺序。
这五种方法各有利弊,你可以根据实际需要和特定情况选择最适合的去重方法。
(regexbuddy) regexbuddy正则表达式测试工具使用方法(图文) RegexBuddy工具简介 全网首发(图文详解1)
(isna函数什么意思) Python中的pandas.isna()函数 检测缺失值:pandas.isna()函数使用简介 全网首发(图文详解1)