首页 > 解决方案 > 删除列表中的后续重复项

问题描述

我有以下清单。

['AAB', 'CAA', 'ADA', 'CADA', 'AACA']

我想得到

['AB', 'CA', 'AD', 'CAD', 'AC']

出局的顺序很重要。

标签: pythonpython-3.xlistduplicates

解决方案


没有OrderedDict和使用set也保持输出的顺序。

x = ['AAB', 'CAA', 'ADA', 'CADA', 'AACA']
["".join([z.add(c) or c for c in w if c not in z]) for w, z in [(w, set()) for w in x]]

输出:

['AB', 'CA', 'AD', 'CAD', 'AC']

列表推导实际上为每个单词填充了一个集合,因此复杂度不会增加。


推荐阅读