Python 列表去重完全指南:七种方法与最佳实践
列表是 Python 基础数据结构,存放有序整数、字符串或自定义对象。以下提供七种去重技术,兼顾顺序保持与可读性。
- 集合
set()去重 - 临时列表法
OrderedDict/dict.fromkeys()- 简单 for 循环
- 列表推导式
- NumPy
unique() - Pandas
unique() enumerate()+ 列表推导式
1. 集合去重
set() 自动去重,转回列表即可。不保留原序。
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. 临时列表法
新建空列表,遍历原列表,仅追加未见过的元素。
my_list = [1, 2, 3, 1, 2, 4, 5, 4, 6, 2]
temp_list = []
for i in my_list:
if i not in temp_list:
temp_list.append(i)
my_list = temp_list
print(my_list)
输出:
[1, 2, 3, 4, 5, 6]
3. OrderedDict / dict.fromkeys()
Python 3.5+ 字典保持插入序,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 循环
遍历原列表,仅将未出现过的元素加入新列表。
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(myFinallist)
输出:
[1, 2, 3, 4, 5, 6]
5. 列表推导式
简洁语法,保持可读性。
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()
返回排序后的唯一元素数组。
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 unique()
轻量级去重,适配类列表对象。
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() + 列表推导式
函数式风格,保留首次出现顺序。
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(my_finallist)
输出:
[1, 2, 3, 4, 5, 6]
总结
set()最快但不保序- 临时列表/for 循环保序但稍冗长
dict.fromkeys()保序且高效- NumPy/Pandas 适合数值/数据框密集工作流
enumerate()推导式兼具可读性与保序
Python
- 精通Python数据类型:实战指南
- 精通Python运算符:全面指南
- 精通Python Pass语句:实战指南
- 精通Python函数参数:位置、关键字与默认参数
- 精通 Python 字典:创建、操作与进阶技巧
- 精通 Python range() 函数:从基础到高级用法
- Python 列表完全指南:增删改查、排序、推导式实战
- Python 计算平均值:从循环到 NumPy 的四种实战方法
- Python list.count() 专家指南:语法、示例与性能解析
- Python 列表删除元素全攻略:remove、pop、clear 与 del 详解
- Python list.index() 详解:查找元素位置的实用指南与示例
- Python 列表完全指南:创建、访问、操作与内置方法详解