在 Python 中从列表中删除重复项
Python 中的列表是一个数据结构,用于以特定的顺序存储数据。列表可以存储多种类型的数据,即 int、float、字符串、另一个列表等。列表是可突变的,这意味着一旦创建的值可以在以后改变。它用方括号 []
表示。
myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
print(myList)
输出:
[2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
你可以使用 for
循环从上述列表中删除重复的元素,如下所示。
myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
resultantList = []
for element in myList:
if element not in resultantList:
resultantList.append(element)
print(resultantList)
输出:
[2, 1, 3, 0, 6, 7, 4, 8]
如果你不想写这么多代码,那么在 Python 中,有两种最流行的方法可以从 List 中删除重复的元素。
- 如果你不想在删除重复元素后还保持列表内元素的顺序,那么你可以使用
Set
数据结构。 - 如果你想在删除重复元素后保持列表内元素的顺序,那么你可以使用名
OrderedDict
。
使用 Python 中的 set()
函数从列表中删除重复元素
为了从列表中删除重复的内容,我们可以使用另一种叫做 Set
的数据结构。集合是一种无序数据类型,只包含唯一的值。集合存储值的顺序与你可能在集合中插入元素的顺序不同。集合使用大括号 {}
来表示。
所以,每当你打印存储在集合里面的元素,那么输出的顺序就会不同。这就是为什么不能对集合进行索引的原因,因为它是无序的。
mySet = {80, 10, 50, 18, 3, 50, 8, 18, 9, 8}
print(mySet)
输出:
{3, 8, 9, 10, 80, 18, 50}
请注意,在我们打印出元素后,元素的顺序是如何改变的。
在一个集合中,不允许有重复的元素,这意味着如果你多次拥有同一个元素,那么集合将把它视为一个元素。这就是为什么我们在 Python 中使用集合从一个列表中删除重复元素的原因。
original_list = [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]
print("Original List is: ",original_list)
convert_list_to_set = set(original_list)
print("Set is: ",convert_list_to_set)
new_list = list(convert_list_to_set)
print("Resultant List is: ",new_list)
original_list = list(convert_list_to_set)
print("Removed duplicates from original list: ",original_list)
输出:
Original List is: [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]
Set is: {3, 8, 9, 10, 80, 18, 50}
Resultant List is: [3, 8, 9, 10, 80, 18, 50]
Removed duplicates from original list: [3, 8, 9, 10, 80, 18, 50]
我们通过应用 set()
函数将一个列表转换为一个集合。然后,我们通过应用 list()
函数将已经去掉重复的转换后的集合转换为一个 list。
在 Python 中使用 OrderDict
来删除重复的内容并维持列表的顺序
使用集合来删除重复元素的问题是,它并不按特定顺序存储元素。因此,如果你不关心元素在结果列表中的存储顺序,即你在删除重复元素后创建的列表,那么在这种情况下,你可以使用 Set
数据结构。
但是如果你想在删除重复的元素后保持列表中元素的顺序,那么你可以使用 Python 中的 OrderedDict
。OrderDict
保留了元素在列表中被插入的顺序。要使用 OrderDict,你首先要从 Python 的 collections
模块中导入它 from collections import OrderedDict
。
from collections import OrderedDict
myList = [2, 1, 2, 3, 0, 6, 7, 6, 8, 0, 4, 8]
final_list = list(OrderedDict.fromkeys(myList))
print(final_list)
输出:
[2, 1, 3, 0, 6, 7, 8, 4]
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn