我要做的是获取一个列表并根据相邻列表成员的比较对其进行过滤。即,像这样
filter(lambda x,y: x != y, someList)
去掉彼此相邻的重复元素。我可以轻松地实现其他方式,但开始尝试使用列表缩减/过滤器,并且我很顽固,想要继续尝试直到我搞清楚。我仍然没有经验丰富的python,但我觉得有这样的东西,我错过了。
谢谢!
答案 0 :(得分:4)
def unique_justseen(iterable, key=None):
"List unique elements, preserving order. Remember only the element just seen."
# unique_justseen('AAAABBBCCDAABBB') --> A B C D A B
# unique_justseen('ABBCcAD', str.lower) --> A B C A D
return imap(next, imap(itemgetter(1), groupby(iterable, key)))
来源: Python Documentation,9.7.2. Recipes。
itertools
中有很多很棒的东西可以实现有效的循环。
答案 1 :(得分:3)
对于连续元素(重复元素),然后:
>>> from itertools import groupby
>>> items = 'aaaabbdeeeeefg'
>>> ''.join(k for k, g in groupby(items))
'abdefg'