Python从列表中删除重复项

时间:2020-02-23 14:43:14  来源:igfitidea点击:

有很多方法可以从Python列表中删除重复项。

  • 使用临时列表和循环
  • 使用set()内置方法
  • 使用字典键
  • 列表count()函数
  • 列表理解

从列表中删除重复项

Python列表可以包含重复的元素。
让我们看一下以不同方式删除重复元素的示例。

1.使用临时列表

这是从列表中删除重复元素的蛮力方法。
我们将创建一个临时列表,并仅在不存在临时列表时才添加元素。

ints_list = [1, 2, 3, 4, 3, 2]

temp = []

for x in ints_list:
  if x not in temp:
      temp.append(x)

ints_list = temp

print(f'Updated List after removing duplicates = {temp}')

输出:删除重复项后的更新列表= [1、2、3、4]

推荐读物:Python f字符串

2. set()函数

Python集没有重复的元素。
我们可以使用内置的set()函数将列表转换为集合,然后使用list()函数将其转换回列表。

ints_list = [1, 2, 3, 4, 3, 2]

ints_list1 = list(set(ints_list))
print(ints_list1)  # [1, 2, 3, 4]

3.列出元素作为字典键

我们知道字典键是唯一的。
dict类具有fromkeys()函数,该函数接受iterable,以使用来自iterable的键来创建字典。

ints_list = [1, 2, 3, 4, 3, 2]

ints_list2 = list(dict.fromkeys(ints_list))
print(ints_list2)  # [1, 2, 3, 4]

4.列表count()函数

列表count()方法返回该值的出现次数。
我们可以将其与remove()方法一起使用,以从列表中消除重复的元素。

ints_list = [1, 2, 3, 4, 3, 2]

for x in ints_list:
  if ints_list.count(x) > 1:
      ints_list.remove(x)
print(ints_list)  # [1, 2, 3, 4]

5.列表理解

我们可以使用列表推导从可迭代对象创建列表。
此技术与使用临时列表和for循环删除重复的元素相同。
但是,它减少了代码的行数。

int_list = [1, 2, 3, 4, 3, 2]
temp = []
[temp.append(x) for x in ints_list if x not in temp]
print(temp)  # [1, 2, 3, 4]

从列表中删除重复项的最佳方法

如果您不想重复元素,则应使用Set。
但是,如果您必须从列表中删除重复的值,那么我宁愿使用count()函数,因为它不会创建另一个临时集或者列表对象。
因此,它的存储效率更高。