配列(リスト)の要素数を取得するには 2021/01/24
Java、Scala、JavaScript、PHP、Perl、Go言語、Ruby、Pythonでの配列(リスト)の要素数を取得する方法。
Javaの配列 | arr.length |
JavaのList | lst.size() |
Scala | lst.size |
JavaScript | arr.length |
PHP | count($arr) sizeof($arr) |
Perl | scalar @arr |
Go言語 | len(arr) |
Ruby | arr.length arr.size |
Python | len(lst) |
関連
Java
配列 2015/01/12
例
int size = arr.length;
配列の length
はメソッドではないので括弧がいらない。
java.util.List
2021/01/24
例
int size = lst.size();
配列の場合と違って size
はメソッドなので括弧が必要。
Scala 2021/01/24
Javaの配列(Array
)であってもScalaのコレクション型であっても length
, size
というメソッドが使える。2つはまったく同じ。
def Seq[A]#length: Int
def Seq[A]#size: Int
def Array[A]#length: Int
def Array[A]#size: Int
長さを直接必要とせず、比較をしたいだけであれば、lengthCompare
というメソッドも使える。長さがlen
よりも短ければ負、len
ちょうどであれば0
、len
よりも長ければ正を返す。
List
などでは長さを調べるのにすべての要素をたどる必要があるが、比較だけであればすべての要素をたどらなくても判定できるため、lengthCompare
はそのように実装されている。
def Seq[A]#lengthCompare(len: Int): Int
def Array[A]#lengthCompare(len: Int): Int
hasDefiniteSize
というメソッドは有限の長さがあるとわかっている場合に true
を返す。無限の長さの場合や有限だとは限らない場合は false
を返す。List
など大抵のコレクション型は true
になるが、 Stream
型は false
になる。Stream
型で本当に無限の長さの場合に size
メソッドを呼び出すと無限ループになってしまう。
def Seq[A]#hasDefiniteSize: Boolean
例
def fib(a: Int, b: Int): Stream[Int] = a #:: fib(b, a + b);
println(fib(1, 1).hasDefiniteSize);
// => false
println(fib(1, 1).size);
// 終わらない
JavaScript 2013/04/19
arr.length
カッコはいらない。
厳密にはサイズではなくインデックスの最大値+1(でも負にはならない)を表すので、以下のようになる。
arr = [];
console.log(arr.length); // => 0
arr[100] = 1;
console.log(arr.length); // => 101
arr = [];
console.log(arr.length); // => 0
arr[-2] = 1;
console.log(arr.length); // => 0
PHP 2015/03/25
count
関数またはsizeof
関数を使う。この2つの関数はまったく同じ意味で、配列の要素の数を返す。
$arr = array(1, 2, array(3, 4));
echo count($arr) . "\n"; // => 3
echo sizeof($arr) . "\n"; // => 3
PHPでは普通の配列と連想配列は同じものなので、この2つは連想配列でも使える。
Perl 2013/07/31
スカラコンテキストで @...
を使うと要素の数を取得できる。
my @arr = ('abc', 'def', 'ghi');
print @arr; # => abcdefghi
print scalar @arr; # => 3
print @arr + 0; # => 3
$#...
で最後の要素のインデックスを取得できる。
print $#arr; # => 2
-> 最後の要素を取得するには
Go言語 (golang)
配列(Array) 2015/02/22
size := len(arr)
スライス(Slice) 2015/02/22
size := len(sl)
len
関数にnil
を与えると0
を返す。
Ruby 2014/12/31
Array#length
または Array#size
を使う。
l = arr.length
# または
l = arr.size
2つのメソッドは全く同じ。ハッシュのサイズ、
文字列の長さの取得も同じ名前の2つのメソッドでできる。
Python 2014/10/20
以下はPythonのシーケンスといわれるリスト、タプル、文字列で共通操作。
len(lst)
ディクショナリに対しても同じ関数が使える。