如何从列表中删除重复项 Python

Python 从列表中删除重复项

列表是包含不同内容的容器 Python 对象,可以是整数、单词、值等。它相当于其他编程语言中的数组。

因此,我们将介绍从给定列表中删除重复项的不同方法 Python.

方法 1)使用 Set 从列表中删除重复项

要从列表中删除重复项,可以使用内置函数 set()。set() 方法的特殊之处在于它返回不同的元素。

我们有一个列表:[1,1,2,3,2,2,4,5,6,2,1]。该列表有许多重复项,我们需要删除这些重复项并仅返回不同的元素。该列表提供给 set() 内置函数。 Later 最终列表显示使用 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,您可以使用一个空的临时列表。为此,首先,您必须循环遍历具有重复项的列表,并将唯一项添加到临时列表中。 Later 临时名单被分配到主名单。

例如:
这是一个使用临时列表的工作示例。

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

我们可以通过导入从给定列表中删除重复项 OrderedDict 来自集合。它从 python2.7 开始可用。OrderedDict 负责按照键出现的顺序返回不同的元素。

让我们利用列表并使用 fromkeys() OrderedDict 中可用的方法从列表中获取唯一元素。

利用 OrderedDict.fromkey() 方法,您必须从集合中导入 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 循环

运用 循环,我们将遍历项目列表以删除重复项。

首先初始化数组为空,即 myFinallist = []在 for 循环中,检查列表中的项目是否存在于数组中 myFinallist。如果项目不存在,则使用 append() 方法。

因此,无论何时遇到重复项,它都会存在于数组 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() 方法。

该方法 unique() 来自 Numpy 模块可以帮助我们从给定的列表中删除重复项。

要使用 Numpy,首先导入 numpy 模块,您需要遵循以下步骤:

第一步)导入Numpy模块

import numpy as np

步骤2) 使用包含重复项的列表,如下所示。使用以下方法将输出转换回列表格式: 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() 和列表推导

这里结合了列表推导和枚举来删除重复元素。枚举返回一个对象,其中包含列表中每个元素的计数器。例如 (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() 方法是它返回不同的元素。
  • 您可以通过导入从给定列表中删除重复项 OrderedDictfrom 集合。从 python2.7 开始可用。 OrderedDictdict 负责按照键出现的顺序返回不同的元素。
  • 您可以使用 for 循环,我们将遍历项目列表以删除重复项。
  • 该方法 unique() 来自 Numpy 模块可以帮助我们从给定的列表中删除重复项。
  • Pandas 模块有一个 unique() 方法将从给定的列表中为我们提供唯一的元素。
  • 列表推导和枚举的组合用于从列表中删除重复元素。枚举返回一个对象,其中包含列表中每个元素的计数器。