删除lis中的后续重复项

2024-10-04 07:39:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个清单

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

我正试着

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

出局的顺序很重要


Tags: ab顺序adaccacadada出局
2条回答

似乎输出中字符的顺序对您很重要。可以这样使用OrderedDict

from collections import OrderedDict
a = ['AAB', 'CAA', 'ADA', 'CADA', 'AACA']
print(["".join(OrderedDict.fromkeys(i)) for i in a])
# ['AB', 'CA', 'AD', 'CAD', 'AC']

没有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']

列表理解实际上为每个单词填充了一个集合,因此复杂性不会增加

相关问题 更多 >