0

Pythonでコレクションを削減する場合、コレクションの残りの部分(未訪問のアイテム)を取得するための最も効率的な方法は何ですか?コレクションを削減する必要があることはよくありますが、削減機能で、削減しているコレクションの未訪問のアイテムを取得したいと考えています。

編集-明確にするために、私は次のようなものが欲しいです:

reduce(lambda to-return, item, rest: (code here), collection, initial)

残りは私のラムダによってまだ見られていないアイテムです

4

1 に答える 1

1

これが私にできる最善のことです。「コレクション」がスライス可能であることを期待しています。

def myreduce(func,collection,*args):
    """func takes 3 parameters.  The previous value,
       the current value, and the rest of the collection"""
    def new_func(x,y):
        try:
            return func(x[1],y[1],collection[y[0]:])
        except TypeError:
            return func(x,y[1],collection[y[0]:])
    return reduce(new_func,enumerate(collection),*args)

print myreduce(lambda x,y,rest:x+y+sum(rest),range(30))

これは十分にテストされていないことに注意してください。実際のコードでこれを使用する前に、徹底的にテストしてください。本当にこれを任意の反復可能で機能させたい場合は、私が推測する上部にそこに置くことができcollection = tuple(collection)ます(反復可能全体を一度にメモリに格納するのに十分なメモリがあると仮定します)

于 2012-11-13T23:43:35.050 に答える