0

私がやろうとしているのは、リストを取得し、隣接するリスト メンバーの比較に基づいてフィルター処理することです。つまり、このようなもの

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

隣接する重複要素を削除します。私はこれを他の方法で簡単に実装できますが、最初はリストの削減/フィルターでそれを実行しようとしていて、それを理解するまで試し続けたいと思うほど頑固です。私はまだpythonの経験がありませんが、このような何かが欠けているように感じます。

ありがとう!

4

2 に答える 2

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 ドキュメント9.7.2。レシピ

itertools効率的なループのための優れた機能が豊富にあります。

于 2013-02-22T05:19:27.110 に答える
3

連続する要素 (重複要素) の場合:

>>> from itertools import groupby
>>> items = 'aaaabbdeeeeefg'
>>> ''.join(k for k, g in groupby(items))
'abdefg'
于 2013-02-22T05:20:57.673 に答える