配列(リスト)の要素数を取得するには (count / len / length / size / sizeof)

各プログラミング言語での、配列の要素数を取得する方法。

Go言語 len(arr)
Javaの配列 arr.length
JavaのList lst.size()
Scala lst.size
PHP count($arr) or sizeof($arr)
Python len(lst)
Ruby arr.length or arr.size
Perl scalar @arr
JavaScript arr.length

関連

Go言語 (golang)

配列(Array)

size := len(arr)

スライス(Slice)

size := len(sl)

len関数にnilを与えると0を返す。

Java

配列

int size = arr.length;

配列の length はメソッドではないので括弧がいらない。

java.util.List

Signature:

int java.util.List<E>#size()

int size = lst.size();

配列の場合と違って size はメソッドであるので括弧が必要。

java.util.List#size | Java Platform SE 8 Javadoc
http://docs.oracle.com/javase/8/docs/api/java/util/List.html#size–

Scala

Javaの配列(Array)であってもScalaのコレクション型であっても length, size というメソッドが使える。 2つはまったく同じ。

Signature:

これらはメソッドだが括弧はいらない。

長さを直接必要とせず、比較をしたいだけであれば、lengthCompare というメソッドも使える。長さがlenよりも短ければ負、lenちょうどであれば0lenよりも長ければ正を返す。

長さを調べるのにすべての要素をたどる必要のある List などでは、比較だけであればすべての要素をたどらなくても len だけたどれば十分であるので、 lengthCompare はそのように実装されている。

hasDefiniteSize というメソッドは有限の長さがあるとわかっている場合に true を返す。無限の長さの場合や有限だとは限らない場合は false を返す。 List など大抵のコレクション型は true になるが、 Stream 型は false になる。 Stream 型で本当に無限の長さの場合に size メソッドを呼び出すと無限ループになってしまう。

PHP

count関数またはsizeof関数を使う。この2つの関数はまったく同じ意味で、配列の要素の数を返す。

$arr = array(1, 2, array(3, 4));

echo count($arr) . "\n"; // => 3
echo sizeof($arr) . "\n"; // => 3

PHPでは普通の配列と連想配列は同じものなので、この2つは連想配列でも使える。

count 関数 | PHP Manual
http://php.net/manual/ja/function.count.php

sizeof 関数 | PHP Manual
http://php.net/manual/ja/function.sizeof.php

Python

以下はPythonのシーケンスといわれるリスト、タプル、文字列で共通操作。

len(lst)

ディクショナリに対しても同じ関数が使える。

Ruby / JRuby

Array#length または Array#size を使う。

l = arr.length
# または
l = arr.size

2つのメソッドは全く同じ。ハッシュのサイズ

文字列の長さの取得も同じ名前の2つのメソッドでできる。

Array#length, Array#size | Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/Array/i/length.html

Perl

スカラコンテキストで @... を使うと要素の数を取得できる。

my @arr = ('abc', 'def', 'ghi');
print @arr;        # => abcdefghi
print scalar @arr; # => 3
print @arr + 0;    # => 3

$#... で最後の要素のインデックスを取得できる。

print $#arr;    # => 2

-> 最後の要素を取得するには

JavaScript

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
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク