如何在 Python 列表中删除重复项
Python 列表去重
列表是一个容器,它包含不同的 Python 对象,这些对象可以是整数、单词、值等。它相当于其他编程语言中的数组。
因此,我们将通过几种方法来遍历如何在 Python 中从给定列表中删除重复项。
方法 1) 使用 Set 从列表中删除重复项
要从列表中删除重复项,您可以使用内置函数 set()
。set()
方法的特点是它返回不同的元素。
我们有一个列表:[1,1,2,3,2,2,4,5,6,2,1]。该列表包含许多重复项,我们需要删除它们并仅获取不同的元素。列表被传递给 set()
内置函数。然后使用 list()
内置函数显示最终列表,如下面的示例所示。
我们得到的输出是不同的元素,所有重复的元素都已被消除。
示例
my_list = [1,1,2,3,2,2,4,5,6,2,1] my_final_list = set(my_list) print(list(my_final_list))
输出
[1, 2, 3, 4, 5, 6]
方法 2) 使用临时列表
要从给定的 list
中删除重复项,您可以使用一个空的临时列表。为此,您首先需要循环遍历包含重复项的列表,并将唯一项添加到临时列表中。然后将临时列表分配给主列表。
示例
这是一个使用临时列表的有效示例。
my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2] print("List Before ", my_list) temp_list = [] for i in my_list: if i not in temp_list: temp_list.append(i) my_list = temp_list print("List After removing duplicates ", my_list)
输出
List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2] List After removing duplicates [1, 2, 3, 4, 5, 6]
方法 3) 使用 Dict
通过从 collections 导入 OrderedDict
,我们可以从给定列表中删除重复项。它从 python2.7 版本开始可用。OrderedDict
负责按键存在的顺序返回不同的元素。
让我们使用一个列表并使用 OrderedDict 中可用的 fromkeys()
方法来获取列表中的唯一元素。
要使用 OrderedDict.fromkey()
方法,您需要从 collections 导入 OrderedDict,如下所示
from collections import OrderedDict
这是一个使用 OrderedDict.fromkeys()
方法删除重复项的示例。
示例
from collections import OrderedDict my_list = ['a','x','a','y','a','b','b','c'] my_final_list = OrderedDict.fromkeys(my_list) print(list(my_final_list))
输出
['a', 'x', 'y', 'b', 'c']
从 Python 3.5+ 开始,我们可以使用常规的 dict.fromkeys()
来获取列表中的不同元素。dict.fromkeys()
方法返回唯一的键,有助于摆脱重复值。
以下是一个展示 dict.fromkeys()
在列表上工作的示例,以提供唯一的项
示例
my_list = ['a','x','a','y','a','b','b','c'] my_final_list = dict.fromkeys(my_list) print(list(my_final_list))
输出
['a', 'x', 'y', 'b', 'c']
方法 4) 使用 for 循环
使用 for 循环,我们将遍历项目列表以删除重复项。
首先将数组初始化为空,即 myFinallist = []
。在 for 循环内部,添加一个检查,看列表中的项是否存在于数组 myFinallist
中。如果项不存在,则使用 append()
方法将该项添加到数组 myFinallist 中。
因此,每当遇到重复项时,它将已存在于数组 myFinallist 中,并且不会被插入。现在让我们在下面的示例中检查一下
示例
my_list = [1,2,2,3,1,4,5,1,2,6] myFinallist = [] for i in my_list: if i not in myFinallist: myFinallist.append(i) print(list(myFinallist))
输出
[1, 2, 3, 4, 5, 6]
方法 5) 使用列表推导式
列表推导式是 Python 函数,用于使用已创建的序列创建新序列(如列表、字典等)。这有助于减少较长的循环,并使您的代码更易于阅读和维护。
让我们使用列表推导式从给定的列表中删除重复项。
示例
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [] [my_finallist.append(n) for n in my_list if n not in my_finallist] print(my_finallist)
输出
[1, 2, 3, 4, 5, 6]
方法 6) 使用 Numpy unique() 方法。
Numpy 模块的 unique()
方法可以帮助我们删除给定列表中的重复项。
要使用 Numpy,首先需要导入 numpy 模块,您需要遵循以下步骤
步骤 1) 导入 Numpy 模块
import numpy as np
步骤 2) 如下所示,在 unique 方法中使用带有重复项的列表。输出使用 tolist()
方法转换回列表格式。
myFinalList = np.unique(my_list).tolist()
步骤 3) 最后按如下方式打印列表
print(myFinalList)
最终的代码及输出如下
import numpy as np my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = np.unique(my_list).tolist() print(myFinalList)
输出
[1, 2, 3, 4, 5, 6]
方法 7) 使用 Pandas 方法
Pandas 模块有一个 unique()
方法,可以为我们提供列表中唯一的元素。
要使用 Pandas 模块,您需要遵循以下步骤
步骤 1) 导入 Pandas 模块
import pandas as pd
步骤 2) 如下所示,在 unique()
方法中使用带有重复项的列表
myFinalList = pd.unique(my_list).tolist()
步骤 3) 如下所示打印列表
print(myFinalList)
最终的代码及输出如下
import pandas as pd my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = pd.unique(my_list).tolist() print(myFinalList)
输出
[1, 2, 3, 4, 5, 6]
方法 8) 使用 enumerate() 和列表推导式
这里结合了列表推导式和 enumerate 来删除重复元素。Enumerate 返回一个带有计数器的对象到列表中的每个元素。例如 (0,1), (1,2) 等。这里的第一个值是索引,第二个值是列表项。W
检查每个元素是否存在于列表中,如果存在,则将其从列表中删除。
示例
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]] print(list(my_finallist))
输出
[1, 2, 3, 4, 5, 6]
摘要
- 要从列表中删除重复项,您可以使用内置函数
set()
。set()
方法的特点是它返回不同的元素。 - 通过从 collections 导入
OrderedDict
,您可以从给定列表中删除重复项。它从 python2.7 版本开始可用。OrderedDictdict
负责按键存在的顺序返回不同的元素。 - 您可以使用 for 循环来遍历项目列表以删除重复项。
- Numpy 模块的
unique()
方法可以帮助我们删除给定列表中的重复项。 - Pandas 模块有一个
unique()
方法,可以为我们提供列表中唯一的元素。 - 列表推导式和 enumerate 的组合用于从列表中删除重复的元素。Enumerate 返回一个带有计数器的对象到列表中的每个元素。