配列(リスト)のすべての要素が特定の条件にマッチするかどうかを検査するには (all / all?)
配列(リスト)のすべての要素が特定の条件にマッチするかどうかを検査する方法。
Rubyでいう all?
。
Scala 2016/12/25
List
クラスなどに forall
というメソッドが、Rubyのall?
メソッドに相当するものとして存在する。
Signature:
-
def Iterable[A]#forall(p: A => Boolean): Boolean
val lst = List(1, 2, 3);
println(lst.forall(_ % 2 == 0)); // => false
println(lst.forall(_ <= 3)); // => true
Iterable
は List
などの Seq
や Set
、Map
の共通のスーパークラス(トレイト)なので、これらのメソッドは Set
や Map
でも使える。
Python 2014/09/13
all
という組み込み関数がある。
Python2でもPython3でも使える。
lst = [1, 2, 3]
print(all(elem % 2 == 0 for elem in lst))
# => False
print(all(elem <= 3 for elem in lst))
# => True
... for ... in ...
のような表記は、[]
で囲んでリスト内包表記として使う他に、
[]
で囲まずにジェネレータ式というものにして all
の引数に直接渡す使い方もあるらしい。
all
にはリスト内包表記よりもジェネレータ式を渡したほうが速い。
ジェネレータ式 | 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#all?
メソッドを使う。
Array
はEnumerable
をインクルードしているので、配列でもEnumerable
のメソッドを使える。
arr = [1, 2, 3]
p arr.all? { |elem| elem % 2 == 0 }
# => false
p arr.all? { |elem| elem <= 3 }
# => true
Enumerable#all?
| Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/Enumerable/i/all=3f.html