配列(リスト)から先頭のn個を除く残りを配列で取得するには

Scala、PHP、Go言語、Ruby、Pythonでの配列(リスト)から先頭のn個を除く残りを配列で取得する方法。

Scala

def Seq[A]#drop(n: Int): Seq[A]

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

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

val result = lst.drop(2);

println(result);
// => List(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

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}                (スライス)

Ruby

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 リファレンスマニュアル

Array#[] | Ruby 2.1 リファレンスマニュアル

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

Python

スライス表記でできる。

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

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

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
このサイトは個人メモの集合です。
スポンサーリンク