配列(リスト)の要素数を取得するには

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

配列

int size = arr.length;

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

java.util.List

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

int size = lst.size();

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

Scala

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ちょうどであれば0lenよりも長ければ正を返す。

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

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

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
sizeof 関数 | PHP Manual

Perl

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

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

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

print $#arr;    # => 2

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

Go言語 (golang)

配列(Array)

size := len(arr)

スライス(Slice)

size := len(sl)

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

Ruby

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

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

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

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

Array#length, Array#size | Ruby 2.1 リファレンスマニュアル

Python

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

len(lst)

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

このサイトは個人メモの集合です。
スポンサーリンク