Python 实现列表去重的方法

简介: 【2月更文挑战第20天】

在 Python 编程中,经常会遇到需要对列表进行去重的情况。列表去重是指将列表中的重复元素去除,只保留其中的一个。本文将详细介绍 Python 中实现列表去重的方法,并提供各种实用的代码示例。

方法一:使用集合(set)

最简单、最常用的方法是使用 Python 的内置数据结构——集合(set)。集合是无序且不允许重复元素的容器,因此可以利用集合的特性来实现列表去重。

lst = [1, 2, 2, 3, 4, 4, 5]
unique_lst = list(set(lst))
print(unique_lst)

输出结果:

[1, 2, 3, 4, 5]

上述代码通过将列表转换为集合,然后再将集合转换回列表的方式,去除了列表中的重复元素。

需要注意的是,这种方法会导致原本的元素顺序被打乱,因为集合是无序的。如果需要保持原始顺序,可以使用下面的方法。

方法二:使用顺序字典(OrderedDict)

为了保持原始顺序,可以使用 Python 标准库中的 collections 模块中的 OrderedDict 类。OrderedDict 是一个有序字典,它会按照元素插入的顺序进行排列。

from collections import OrderedDict

lst = [1, 2, 2, 3, 4, 4, 5]
unique_lst = list(OrderedDict.fromkeys(lst))
print(unique_lst)

输出结果:

[1, 2, 3, 4, 5]

上述代码中,OrderedDict.fromkeys() 方法会删除重复的键,然后将剩余的键转换为列表。

方法三:使用列表推导式

列表推导式是一种简洁、灵活的方式,可以用来创建新的列表。在列表推导式中,我们可以使用条件语句来判断元素是否已经存在于结果列表中,从而实现去重的效果。

lst = [1, 2, 2, 3, 4, 4, 5]
unique_lst = [x for i, x in enumerate(lst) if x not in lst[:i]]
print(unique_lst)

输出结果:

[1, 2, 3, 4, 5]

上述代码中,enumerate() 函数将列表元素与索引配对,然后通过判断元素是否在当前索引之前的列表中出现来去除重复元素。

方法四:使用字典

除了使用集合和顺序字典,我们还可以利用 Python 的字典数据结构来实现列表去重。字典中的键是唯一的,因此可以利用这个特性来去除列表中的重复元素。

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

输出结果:

[1, 2, 3, 4, 5]

上述代码中,dict.fromkeys() 方法会创建一个字典,其中的键是列表中的元素,而值都被设置为 None。然后我们将字典的键转换为列表,即可得到去重后的结果。

方法五:使用逐个比较

如果列表已经有序,或者不希望改变原始顺序,可以使用逐个比较的方法来实现列表去重。

lst = [1, 2, 2, 3, 4, 4, 5]
unique_lst = []
for x in lst:
    if x not in unique_lst:
        unique_lst.append(x)
print(unique_lst)

输出结果:

[1, 2, 3, 4, 5]

上述代码中,我们逐个比较列表中的元素与结果列表中的元素,如果结果列表中没有该元素,则将其添加到结果列表中。

方法六:使用函数库

除了上述方法之外,还可以使用 Python 的函数库来实现列表去重。例如,numpy 库提供了 unique() 函数,可以用来去除列表中的重复元素。

import numpy as np

lst = [1, 2, 2, 3, 4, 4, 5]
unique_lst = np.unique(lst)
print(unique_lst)

输出结果:

[1 2 3 4 5]

上述代码中,np.unique() 函数会返回一个已排序的不重复元素列表。

结论

本文介绍了 Python 中实现列表去重的多种方法,包括使用集合、顺序字典、列表推导式、字典、逐个比较和函数库等方法。这些方法各有优劣,可以根据具体需求来选择合适的方法。

目录
相关文章
|
1月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
150 1
|
1月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
210 0
|
1月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
334 0
|
1月前
|
开发者 Python
Python列表推导式:优雅与效率的完美结合
Python列表推导式:优雅与效率的完美结合
353 116
|
1月前
|
Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
339 119
|
1月前
|
Python
Python列表推导式:优雅与效率的艺术
Python列表推导式:优雅与效率的艺术
239 99
|
1月前
|
数据处理 Python
解锁Python列表推导式:优雅与效率的完美融合
解锁Python列表推导式:优雅与效率的完美融合
255 99
|
1月前
|
Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
|
1月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
112 1
|
1月前
|
大数据 开发者 Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术