在 Python 中,如果你有一个列表(或任何可迭代对象),想要删除重复值,保留一个,可以使用以下几种方法:
✅ 方法一:使用 set() + list()
my_list = [1, 2, 3, 2, 4, 4, 5]
unique_list = list(set(my_list))
print(unique_list)
输出:
[1, 2, 3, 4, 5]
⚠️ 注意: set() 会破坏顺序,所以如果你需要保留原始顺序,可以使用下面的方法。
✅ 方法二:使用 dict.fromkeys()
my_list = [1, 2, 3, 2, 4, 4, 5]
unique_list = list(dict.fromkeys(my_list))
print(unique_list)
输出:
[1, 2, 3, 4, 5]
✅ 优点: 保留原始顺序,适合处理需要保留顺序的场景。
✅ 方法三:使用 pandas(如果需要处理 DataFrame)
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
unique_df = df.drop_duplicates()
print(unique_df)
输出:
0 1 2
0 1 2 3
1 2 3 4
2 3 4 5
✅ 方法四:使用 itertools(如果需要保留顺序)
from itertools import groupby
my_list = [1, 2, 3, 2, 4, 4, 5]
unique_list = []
seen = set()
for item in my_list:
if item not in seen:
seen.add(item)
unique_list.append(item)
print(unique_list)
输出:
[1, 2, 3, 4, 5]
✅ 总结
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
set() |
简单快速 | 无顺序 | 顺序丢失 |
dict.fromkeys() |
需要保留顺序 | 保留顺序 | 无 |
pandas |
处理 DataFrame | 保留顺序 | 依赖 pandas |
如果你有具体的数据结构或场景,可以告诉我,我可以帮你定制方案。