Python 3にはmore-itertoolsという外部ライブラリがあり、itertools標準ライブラリでコードのみ紹介された関数やその他の便利な関数が提供されています。この記事はfirst
とfirst_true
の紹介です。
more-itertoolsのfirstにジェネレーター式を指定すればC++のfind
(cpprefjpの文章)やC#のFirst
(Microsoft Docsの文章)と同様の機能が得られます。first_true
でラムダ式を指定することもできます。
from more_itertools import first x = first((i for i in range(5) if i % 2 == 1), None) print(x) # 1
from more_itertools import first_true x = first_true(range(5), lambda x: x % 2 == 1, None) print(x) # 1
first
はnth
、last
に変えてn番目や最後の要素も取得できます。
ちなみに同more-itertoolsのlocate
と組み合わせてfirst(localte(...), lambda x: ..., -1)
とすれば最初やn番目に見つかった要素のインデックスも取得できます。
more-itertoolsは以下の記事で知りました。