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

Sahil Bhosale 2023年1月30日 2021年2月7日 Python Python List
  1. 使用 Python 中的 set() 函数从列表中删除重复元素
  2. 在 Python 中使用 OrderDict 来删除重复的内容并维持列表的顺序
在 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 中删除重复的元素。

  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 的 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 Bhosale avatar Sahil Bhosale avatar

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

相关文章 - Python List

  • 从 Python 列表中删除某元素的所有出现
  • 在 Python 中将字典转换为列表
  • 如何在 Python 中获取一个列表的平均值
  • Python 列表方法 append 和 extend 之间有什么区别
  • 如何在 Python 中将列表转换为字符串