Python使用两个参数过滤一个函数?

时间:2013-02-22 05:14:03

标签: python list

我要做的是获取一个列表并根据相邻列表成员的比较对其进行过滤。即,像这样

filter(lambda x,y: x != y, someList)

去掉彼此相邻的重复元素。我可以轻松地实现其他方式,但开始尝试使用列表缩减/过滤器,并且我很顽固,想要继续尝试直到我搞清楚。我仍然没有经验丰富的python,但我觉得有这样的东西,我错过了。

谢谢!

2 个答案:

答案 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 Documentation9.7.2. Recipes

itertools中有很多很棒的东西可以实现有效的循环。

答案 1 :(得分:3)

对于连续元素(重复元素),然后:

>>> from itertools import groupby
>>> items = 'aaaabbdeeeeefg'
>>> ''.join(k for k, g in groupby(items))
'abdefg'