如何在Python实现列表去重并保持原来顺序

一、实现目标

在python中现有如下列表:

["a", "b", "a", "c", "b", "a"]

如何实现此列表去重,并保持原来的顺序不变。即变成如下新列表。

["a", "b", "c"]

二、问题分析

如果用set()直接去重,就难以保证列表元素原来的顺序,因此不能直接用set。而是用下面的两种办法。

1.空列表法

采用空列表法,新建一个空列表,然后遍历旧列表,如果新列表没有,就把旧列表的元素添加进去,这样就实现了列表去重,代码如下:

old = ["a", "b", "a", "c", "b", "a"]
new = []
for item in old:
    if item not in new:
        new.append(item)
print(new)

如何在Python实现列表去重并保持原来顺序_第1张图片

2. 字典法

采用字典法,利用dict.fromkeys(),这种方法建立起键名为old元素,键值为none的字典,由于字典不能重复,所以重复键名会被删除,并保留原来的元素顺序,相对前者的遍历、判断,方法更为简单,代码如下:

old = ["a", "b", "a", "c", "b", "a"]
dic = dict.fromkeys(old)
new = list(dic.keys())
print(new)

如何在Python实现列表去重并保持原来顺序_第2张图片

字典法展示

也可以使用OrderedDict这个包来为列表去重,并保持原来的顺序。

from collections import OrderedDict
# 初始列表
original_list = ["a", "b", "a", "c", "b", "a"]
# 使用有序字典去重,同时保持顺序
unique_list = list(OrderedDict.fromkeys(original_list))
print(unique_list)

三、学后反思

  1. 两种方法更有所长,但是第二方法更为简单,代码量最少,效率应该是最高。第一种方法由于要遍历和判断,可能效率有点儿低。
  2. 学习Python有时要多种方法并用,虽然殊途同归,但可以更好地把各个知识点融汇贯通,增强对知识点的理解和把握。
  3. 字典的用途非常广泛,无论是列表去重、词频统计、批量替换,都少不了它的身影,所以要认真地学习,多多上机操练,用一些常用的案例来巩固所学的知识。

你可能感兴趣的:(基础操作,python,python,windows,开发语言)