菜鸟笔记
提升您的技术认知

python List去重

前言

Python中对List中的元素进行去重操作

程序

  • set方法
# 去重后与原列表长度比较
lst = [1, 3, 5, 3, 4, 4, 2, 9, 6, 7]

set_lst = set(lst)

# set会生成一个元素无序且不重复的可迭代对象,也就是我们常说的去重
if len(set_lst) == len(lst):
    print('列表里的元素互不重复!')
else:
    print('列表里有重复的元素!')
  • append的方式
# 把原列表中的元素添加到一个新列表,确保新列表里不存在重复的元素,然后比较两个列表

lst = [1, 3, 5, 8, 9, 9, 0, 0, 3, 3]

new_list = []

for i in lst:
    if i not in new_list:
        new_list.append(i)

# 这样能确保新的列表里包含原列表里所有种类的元素,且元素互不重复

if len(new_list) == len(lst):
    print('原列表里的元素互不重复!')
else:
    print('原列表里有重复的元素!')
  • fromkeys的方法
# 创建一个字典,因为字典的键会自动去重,所以可以比较字典和原列表的长度,跟方法一很像

lst = [1, 3, 5, 8, 9, 9, 0, 0]

dic = {
  }.fromkeys(lst)

# 这种方法建立字典,会把列表里的元素当做字典的键,由于字典的键不能重复,所以会自动去重

if len(dic) == len(lst):
    print('列表里的元素互不重复!')
else:
    print('列表里有重复的元素!')
  • 对List 中元素出现的次数做统计
from collections import Counter  # 引入Counter

a = [1, 2, 3, 3, 4, 4]
b = dict(Counter(a))
print(b)
print([key for key, value in b.items() if value > 1])  # 只展示重复元素
print({
  key: value for key, value in b.items() if value > 1})  # 展现重复元素和重复次数

结果展示

{
  1: 1, 2: 1, 3: 2, 4: 2}
[3, 4]
{
  3: 2, 4: 2}
  • set去重顺序不会变
# 可以通过列表中索引(index)的方法保证去重后的顺序不变
li = [1, 2, 3, 3, 4, 4]
lis = list(set(li))
print(li)
print(lis)
lis.sort(key=li.index)
print(lis)

结果展示

[1, 2, 3, 3, 4, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]