python列表转换为具有唯一子序列的列表

问题描述 投票:0回答:3

我有一个看起来像这样的列表:

["A","A","A","A", "B","B","B","A","A","C","C,"B","B","A"]

我想在所有子序列上运行唯一,所以输出将是:

["A","B","A","C","B","A"]

最好的方法是什么?

谢谢

python-3.x list unique itertools
3个回答
0
投票

假设您的子列表按照问题进行排序,则可以执行以下操作:

unique_list = []
unique_list.append(your_list[0])
for literal in your_list
    if not unique_list[-1] is literal
        unique_list.append(literal)

但是,这不是一个非常快的解决方案,可能有更好的方法来实现。


0
投票

使用itertools.groupby

itertools.groupby

0
投票

如果您想要复杂的单线飞机,可以通过列表理解来完成:

>>> from itertools import groupby
>>> lst = ["A","A","A","A","B","B","B","A","A","C","C","B","B","A"]
>>> [k for k, _ in groupby(lst)]
['A', 'B', 'A', 'C', 'B', 'A']

[这是使用>>> l = ["a", "b", "a", "a", "x", "x", "a", "a", "a"] >>> x = [l[x] for x in range(len(l)) if x == 0 or l[x - 1] != l[x]] ['a', 'b', 'a', 'x', 'a'] 中的reduce的另一个想法。我认为这是一个矫kill过正的方法,但也许可以帮助您将其改进为更好的方法:

functools
© www.soinside.com 2019 - 2024. All rights reserved.