我有一个看起来像这样的列表:
["A","A","A","A", "B","B","B","A","A","C","C,"B","B","A"]
我想在所有子序列上运行唯一,所以输出将是:
["A","B","A","C","B","A"]
最好的方法是什么?
谢谢
假设您的子列表按照问题进行排序,则可以执行以下操作:
unique_list = []
unique_list.append(your_list[0])
for literal in your_list
if not unique_list[-1] is literal
unique_list.append(literal)
但是,这不是一个非常快的解决方案,可能有更好的方法来实现。
itertools.groupby
如果您想要复杂的单线飞机,可以通过列表理解来完成:
>>> 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