配列(リスト)から先頭のn個の要素のみを配列で取得するには (take / first)

配列(リスト)から先頭のn個の要素のみを配列で取得する方法。

Go言語 (golang)

配列もスライスも [:n] というスライス表記で先頭からn個の要素のスライスを取得することができる。配列であってもスライスになる。

arr := [...]int{10, 20, 30, 40, 50} // (配列)
fmt.Printf("%#v\n", arr[:n])
// => []int{10, 20, 30}                (スライス)

sl := []int{10, 20, 30, 40, 50}     // (スライス)
fmt.Printf("%#v\n", sl[:n])
// => []int{10, 20, 30}                (スライス)

Scala

Signature:

結果を新しいリストで返し、自身は変更しない。

もともと要素がn個よりも少ない場合はそのまま返し、エラーにはならない。

PHP

array_slice($arr, 0, $n) のようにする。

$arr = array(10, 20, 30, 40, 50);

$n = 3;

var_export(array_slice($arr, 0, $n));

// 出力結果
// array (
//   0 => 10,
//   1 => 20,
//   2 => 30,
// )

array_slice は結果を新しい配列で返し、引数の配列を変更しない。

もともと要素が$n個よりも少ない場合はそのまま返し、エラーにはならない。

array_slice 関数 | PHP Manual
http://php.net/manual/ja/function.array-slice.php

Ruby / JRuby

スライスを使うか、Array#first というメソッドを使う。

arr = [10, 20, 30, 40, 50]

n = 3

p arr.slice(0, n)
p arr[0, n]
p arr.first(n)
# => [10, 20, 30]

first は引数を付けないと配列の先頭の要素を取得するが、引数を与えると先頭からその数だけ要素を抜き出した配列を取得できる。

arr = [10, 20, 30, 40, 50]

p arr.first
# => 10
p arr.first(1)
# => [10]
p arr.first(3)
# => [10, 20, 30]

Array#[] | Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/Array/i/=5b=5d.html

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

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

sh (シェルスクリプト)

配列ではないが、テキストファイルに関して、先頭のn行だけを標準出力させる例 (headコマンド)

# 最初の3行を出力
head -n3 foo.txt
# または
cat foo.txt | head -n3

関連

  1個 n個
最初の○○以外の要素を取得するには tail drop
最初の○○の要素を取得するには head take
最後の○○の要素を取得するには last  
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク