如何从Python列表中删除重复项
当一个元素在列表中出现多次时,我们称之为重复项。
在本教程中,我们将学习不同的方法来从Python列表中删除这些重复项。
- 基本方法
- 使用列表解析
- 使用 Set()
- 使用 enumerate()
- 使用 OrderedDict
让我们详细讨论每一种方法。
基本方法
在第一种方法中,我们将介绍使用Python从列表中删除重复项的基本方法。
#initializing the list
list_value1=[12,15,11,12,8,15,3,3]
print("The initialized list is ",list_value1)
res_list=[]
for i in list_value1:
if i not in res_list:
res_list.append(i)
#printing the list after removing duplicate elements
print("The resultant list after removing duplicates is ",res_list)
输出:
The initialized list is [12, 15, 11, 12, 8, 15, 3, 3]
The resultant list after removing duplicates is [12, 15, 11, 8, 3]
解释
所以,现在是时候看一下上面程序的解释了。
- 步骤1是初始化包含重复值的列表。
- 然后,我们打印出这个列表,这样我们可以在输出中比较列表。
- 在下一步中,我们声明一个空列表,将保存所有唯一的值,并使用循环和决策来检查特定元素是否存在于列表中,如果不存在,则将其添加到列表中。
- 最后,我们显示结果列表。
在第二个程序中,我们将使用列表推导来实现目标。
使用列表推导
以下程序说明了相同的情况-
#initializing the list
list_value1=[12,15,11,12,8,15,3,3]
print("The initialized list is ",list_value1)
res_list=[]
#using list comprehension
[res_list.append(i) for i in list_value1 if i not in res_list]
#printing the list after removing duplicate elements
print("The resultant list after removing duplicates is ",res_list)
输出:
The initialized list is [12, 15, 11, 12, 8, 15, 3, 3]
The resultant list after removing duplicates is [12, 15, 11, 8, 3]
说明
让我们理解一下上述程序中所做的事情-
- 步骤1是初始化包含重复值的列表。
- 然后,我们打印这个列表,以便我们可以比较输出中的列表。
- 在下一步中,我们使用列表推导构建相同的逻辑。
- 最后,我们显示结果列表。
第三种方法中,我们将看到如何使用 set() 来获取一个包含不同元素的列表。
使用 Set()
下面给出的程序显示了如何实现-
#initializing the list
list_value1 = [12,15,11,12,8,15,3,3]
print("The initialized list is ",list_value1)
res_list = []
#using set()
list_value1 = list(set(list_value1))
#printing the list after removing duplicate elements
print("The resultant list after removing duplicates is ",list_value1)
输出:
The initialized list is [12, 15, 11, 12, 8, 15, 3, 3]
The resultant list after removing duplicates is [12, 15, 11, 8, 3]
说明
让我们尝试理解发生了什么,
- 步骤1是初始化包含重复值的列表。
- 在此之后,我们已打印了该列表,以便我们可以在输出中比较这些列表。
- 在下一步中,我们使用 set() 在 list() 内部,并将list_value1作为参数传递,以便我们可以获得一个不同元素的列表。
- 最后,我们显示了结果列表。
使用enumerate()
现在让我们看看如何使用 enumerate() 来实现我们的目标。
以下程序演示了同样的内容-
#initializing the list
list_value1 = [12,15,11,12,8,15,3,3]
print("The initialized list is ",list_value1)
res_list = [x for n,x in enumerate(list_value1) if x not in list_value1[:n]]
#printing the list after removing duplicate elements
print("The resultant list after removing duplicates is ",res_list)
输出:
The initialized list is [12, 15, 11, 12, 8, 15, 3, 3]
The resultant list after removing duplicates is [12, 15, 11, 8, 3]
解释
- 步骤1是初始化包含重复值的列表。
- 然后,我们已经打印了这个列表,这样在输出中比较列表变得容易。
- 在下一步中,我们在列表推导式中使用了 enumerate() ,它将返回一个包含唯一元素的列表。
- 最后,我们显示了结果列表。
最后,在最后的程序中,我们将看到如何使用Python的OrderedDict来删除列表中的重复项。
使用OrderedDict
下面给出的程序展示了如何做到这一点-
from collections import OrderedDict
#initializing the list
list_value1 = [12,15,11,12,8,15,3,3]
print("The initialized list is ",list_value1)
#using OrderedDict
res_list = list(OrderedDict.fromkeys(list_value1))
#printing the list after removing duplicate elements
print("The resultant list after removing duplicates is ",res_list)
输出:
The initialized list is [12, 15, 11, 12, 8, 15, 3, 3]
The resultant list after removing duplicates is [12, 15, 11, 8, 3]
解释
- 步骤1是从collections中导入OrderedDict,以便我们可以使用它来从列表中删除重复项。
- 在下一步中,我们初始化了包含重复值的列表。
- 然后,我们打印了这个列表,以便我们可以在输出中比较列表。
- 现在我们将list_values1传递给OrderedDict.fromkeys()。
- 最后,我们显示结果列表,该列表不包含任何重复元素。
结论
在本教程中,我们探讨并学习了一些有趣的方法来从Python列表中删除重复项。