繁体   English   中英

删除列表中的后续重复项

[英]Remove subsequent duplicates items in a list [closed]

我下面有一个清单。

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

而我试图得到

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

排列顺序很重要。

看来输出中字符的顺序对您很重要。 您可以像这样使用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']

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM