potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

Python3 more-itertoolsのfirst/first_trueで条件に一致する最初の要素を取得する

Python 3にはmore-itertoolsという外部ライブラリがあり、itertools標準ライブラリでコードのみ紹介された関数やその他の便利な関数が提供されています。この記事はfirstfirst_trueの紹介です。

more-itertoolsのfirstにジェネレーター式を指定すればC++findcpprefjpの文章)やC#FirstMicrosoft 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

firstnthlastに変えてn番目や最後の要素も取得できます。

ちなみに同more-itertoolsのlocateと組み合わせてfirst(localte(...), lambda x: ..., -1)とすれば最初やn番目に見つかった要素のインデックスも取得できます。

more-itertoolsは以下の記事で知りました。

qiita.com