とあるものを書いていて、
という要件が出てきた.
分解し、各動作の組み合わせで、すぐ解決できそうなものではある.
が、その過程でけっこう頭を悩ましてしまったので、解決方針の考えをまとめておく.
思ったより悩んだ要因として、以下の事がある.
- 条件は複数ある
- 最初の要素★以外★を抽出したい の以外の部分
これらの解決法としてどう表現するか?を試行錯誤したログのような記事だと思っていただきたい.
やはり例がないと何がしたいのかも分からないので、簡単な例を用意する.
前段階として考えていくに辺り、★以外★の部分もひとまず邪魔だ、
その部分をまず除き、単純化した要件で考えてみる.
こちらの動作で考えてみたい.この動作であれば至ってシンプルかと.
例題を用意する.
例題: リスト:[6,1,5,3,8,10,11]から、 5より小さい要素・8より大きい要素の、それぞれ条件を満たす最初の要素を取り出せ
つまり期待する動作としては、以下の動作だ.
f [6,1,5,3,8,10,11] -> [1,10] (3,11は対象にならない)
まずすぐに思いつく方法として、以下のfilterなどでもよくあるやり方がある.
- 条件を満たす最初の要素をリストから抽出する関数、find()関数を用意する
- 各条件のリスト([p1,p2,...])を用意する
- 探索対象のリスト(L)を引数としたfind関数へ、各条件を順次適用する