2

Python 3の関数を使用すると、フィルター関数で定義された任意の基準に一致するfilter要素をから返すことができます。基準を満たす要素を返す代わりに、要素のインデックスIterableを返すことを除いて、同様のことを実行できるようにしたいと思います。(オブジェクトのメソッドと同様)indexlist

>>> stuff = ("foo", "bar", "baz")
>>> f = filter(lambda x: x == "baz", stuff)
>>> [e for e in f]
['baz'] # Here I want the integer 2 because "baz" is at index 2

もちろん、私はこの些細な例で私がただ言うことができることに気づきます:

stuff = ["foo", "bar", "baz"]
index = stuff.index("baz")

しかし、要点は、任意のフィルター関数と任意のIterables(リストだけでなく!)を使用してインデックスを取得できるようにしたいということです。

関数をハンドロールせずにこれを行う便利な方法はありますか?

4

1 に答える 1

3

リスト内包表記を使用します:

>>> [i for i,x in enumerate(stuff) if x == "baz"]
[2]

またはジェネレータ式:

>>> gen = (i for i,x in enumerate(stuff) if x == "baz")
>>> list(gen)
[2]
于 2013-03-23T19:48:05.290 に答える