配列(リスト)に特定の条件にマッチする要素が含まれているかどうかを検査するには (any / any? / exists / find)
配列(リスト)に特定の条件にマッチする要素が含まれているかどうかを検査する方法。
Rubyでいう any?
。
Scala 2016/12/25
List
クラスなどにexists
というメソッドが、Rubyのany?
メソッドに相当するものとして存在する。
find
というメソッドは条件にマッチする最初の要素を取得し、見つからなければNone
を返す。
Signature:
例
val lst = List(1, 2, 3);
val result1 = lst.exists(_ % 2 == 0);
println(result1); // => true
val result2 = lst.exists(_ > 3);
println(result2); // => false
Iterable
は List
などの Seq
や Set
、Map
の共通のスーパークラス(トレイト)なので、これらのメソッドは Set
や Map
でも使える。
Python 2015/03/22
any
という組み込み関数がある。
Python2でもPython3でも使える。
lst = [1, 2, 3]
print(any(elem % 2 == 0 for elem in lst))
# => True
... for ... in ...
のような表記は、[]
で囲んでリスト内包表記として使う他に、
[]
で囲まずにジェネレータ式というものにして any
の引数に直接渡す使い方もあるらしい。
any
にはリスト内包表記よりもジェネレータ式を渡したほうが速い。
lst = [1, 2, 3]
print(any(elem > 3 for elem in lst))
# => False
ジェネレータ式 | Python 2.7 documentation
http://docs.python.jp/2/reference/expressions.html?highlight=generator#genexpr
ジェネレータ式 | Python 3 documentation
http://docs.python.jp/3/reference/expressions.html?highlight=generator#genexpr
Ruby / JRuby 2015/01/04
Enumerable#any?
メソッドを使う。
Array
はEnumerable
をインクルードしているので、配列でもEnumerable
のメソッドを使える。
arr = [1, 2, 3]
p arr.any? { |elem| elem % 2 == 0 }
# => true
p arr.any? { |elem| elem > 3 }
# => false
Enumerable#any?
| Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/Enumerable/i/any=3f.html