配列(リスト)の先頭のn個以外の残りを配列で取得するには (drop)

Go言語 (golang)

配列もスライスも [n:] というスライス表記で先頭のn個を除く部分をスライスで取得することができる。元が配列であってもスライスになる。

    n := 2

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

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

Scala

Signature:

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

val lst = List(10, 20, 30, 40, 50);

val result = lst.drop(2);

println(result);
// => List(30, 40, 50)

Python

スライス表記でできる。

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

print(lst[2:])
# => [30, 40, 50]

PHP

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

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

$n = 2;

var_export(array_slice($arr, $n));
// 出力結果
// array (
//   0 => 30,
//   1 => 40,
//   2 => 50,
// )

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

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

Ruby / JRuby

Enumerable#drop メソッドを使う。これは非破壊的なメソッド。 ArrayEnumerableをインクルードしているので、配列でもEnumerableのメソッドを使える。

arr.drop(n)

またはスライスを使う。

arr.slice(n, arr.size - n)
# または
arr[n, arr.size - n]
# または
arr.slice(n .. arr.size)
# または
arr[n .. arr.size]

上の2つの書き方は、2つ目の引数が配列の後ろの境界を超えてもエラーを出さないようなので、以下でも同じ。

arr.slice(n, arr.size)
# または
arr[n, arr.size]

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

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

sh (シェルスクリプト)

配列ではないが、テキストファイルに関しては、 tailコマンドを使うと、最初のn行を削除する処理をできる。

-n オプションの後に + と数字をつけると、その行番号から後ろだけを出力してくれる。従って先頭の2行を削除するには3行目から出力すればよいので、 -n+3 と指定する。

# 最初の2行を除く後続の行を出力
tail -n+3 foo.txt

sedコマンド でもできる。

# 2行目から最後まで抽出
sed -n '2,$p' foo.txt
# または
sed -n 2,\$p foo.txt

関連

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