在 Python 中从列表中删除重复项

  1. 使用 Python 中的 set() 函数从列表中删除重复元素
  2. 在 Python 中使用 OrderDict 来删除重复的内容并维持列表的顺序

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 中删除重复的元素。

  1. 如果你不想在删除重复元素后还保持列表内元素的顺序,那么你可以使用 Set 数据结构。
  2. 如果你想在删除重复元素后保持列表内元素的顺序,那么你可以使用名 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 中的 OrderedDictOrderDict 保留了元素在列表中被插入的顺序。要使用 OrderDict,你首先要从 Python 的集合模块中导入它 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]

相关文章 - Python List

  • 用 Python 将两个列表转换为字典
  • 如何在 Python 列表中查找一个元素的索引