Python从列表中删除重复项
列表是包含不同Python对象的容器,可以是整数、单词、值等。它相当于其他编程语言中的数组。
因此,这里将通过不同的方式从给定列表中删除重复项。
在本教程中,您将学习:
- 使用 Set 删除列表中的重复项
- 使用临时列表从列表中删除重复项。
- 使用 Dict 从列表中删除重复项
- 使用for循环从列表中删除重复项
- 使用列表推导从列表中删除重复项
- 使用 Numpy unique() 方法从列表中删除重复项。
- 使用 Pandas 方法从列表中删除重复项
- 使用 enumerate() 和列表推导删除重复项
使用 Set 从列表中删除重复项
要从列表中删除重复项,您可以使用内置函数 set()。 set() 方法的特点是它返回不同的元素。
我们有一个列表:[1,1,2,3,2,2,4,5,6,2,1]。该列表有许多重复项,我们需要删除这些重复项并只取回不同的元素。该列表提供给 set() 内置函数。稍后使用 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]
使用临时列表从列表中删除重复项
要从给定列表中删除重复项,您可以使用空的临时列表。首先,您必须遍历具有重复项的列表并将唯一项目添加到临时列表中。稍后将临时列表分配给主列表。
这是一个使用临时列表的工作示例。
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]
使用字典从列表中删除重复项
我们可以通过从集合中导入 OrderedDict 从给定列表中删除重复项。它从 python2.7 开始可用。 OrderedDict 负责按照键出现的顺序返回不同的元素。
让我们利用一个列表,并使用 OrderedDict 中可用的 fromkeys() 方法从列表中获取唯一元素。
要使用 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']
使用 for 循环从列表中删除重复项
使用for循环,我们将遍历列表项来去除重复项。
首先将数组初始化为空,即 myFinallist =[]。在 for 循环中,添加检查列表中的项目是否存在于数组 myFinallist 中。如果项目不存在,则使用 append() 将项目添加到数组 myFinallist方法。
因此,每当遇到重复项时,它将已经存在于数组 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]
使用列表推导从列表中删除重复项
列表推导式是 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]
使用 Numpy unique() 方法从列表中删除重复项。
Numpy 模块中的 unique() 方法可以帮助我们从给定的列表中删除重复项。
要使用 Numpy 首先导入 numpy 模块,您需要按照以下步骤操作:
第 1 步 ) 导入 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]
使用 Pandas 方法从列表中删除重复项
Pandas 模块有一个 unique() 方法,可以为我们提供给定列表中的唯一元素。
要使用 Pandas 模块,您需要按照以下步骤操作:
第 1 步)导入 熊猫模块
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]
使用 enumerate() 和列表理解删除重复项
这里结合了列表理解和枚举来删除重复的元素。 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() 方法的特点是它返回不同的元素。
- 您可以通过从集合中导入 OrderedDict 从给定列表中删除重复项。它从 python2.7 开始可用。 OrderedDictdict 会按照键出现的顺序为您返回不同的元素。
- 您可以使用 for 循环,我们将遍历项目列表以删除重复项。
- Numpy 模块中的 unique() 方法可以帮助我们从给定的列表中删除重复项。
- Pandas 模块有一个 unique() 方法,可以为我们提供给定列表中的唯一元素。
- 列表推导和枚举的组合用于从列表中删除重复的元素。 Enumerate 返回一个对象,其中包含列表中每个元素的计数器。
Python