連続した数値の配列(リスト)を作成するには (range / seq / to / until)
連続した数値の配列(リスト)を作成する方法。
Scala 2015/04/15
to
や until
というメソッドでできる。
例
// 0から9までのリスト
0 until 10
// 1から10までのリスト
1 to 10
scala.collection.immutable.IndexedSeq
のオブジェクトを生成できる。
Signature:
def RichInt#to(end: Int): IndexedSeq[Int]
def RichInt#to(end: Int, step: Int): IndexedSeq[Int]
def RichInt#until(end: Int): IndexedSeq[Int]
def RichInt#until(end: Int, step: Int): IndexedSeq[Int]
返り値にある型はすべて IndexedSeq[Int]
を実装している。
to
も until
も scala.runtime.RichInt
のメソッドだが、scala.Int
から scala.runtime.RichInt
への暗黙の変換が scala.Predef
で定義されているので、普通の整数から scala.runtime.RichInt
のメソッドを呼び出すことができる。
整数のリストしか作れないので、例えば 0.0, 0.1, 0.2,,, のようなのを作りたい場合は以下のようにする。
// 0.0, 0.1, 0.2, ,,, 9.9
(0 until 100).map(_ / 10.0)
3 until 2
のように逆に書くと大きさ0の IndexedSeq[Int]
になる。
to
や until
は普通のメソッドであるので 0 .until(100)
と書いてもいいのだが、
1 to 10
のように中置記法で書かれることが多い。
PHP 2016/08/05
range
関数を使う。
var_export(range(0, 10));
// 出力結果
// array (
// 0 => 0,
// 1 => 1,
// 2 => 2,
// 3 => 3,
// 4 => 4,
// 5 => 5,
// 6 => 6,
// 7 => 7,
// 8 => 8,
// 9 => 9,
// 10 => 10,
// )
range
関数 | PHP Manual
http://php.net/manual/ja/function.range.php
Python 2014/09/29
# 0から9までのリスト
range(10)
# 1から10までのリスト
range(1, 11)
# 6から10までの偶数だけのリスト
range(6, 12, 2)
# 0から-10までの負の偶数だけのリスト
range(0, -11, -2)
NumPyのarange
であれば、浮動小数点数の配列も作れる。
import numpy as np
np.arange(0, 1, 0.1)
# => array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
linspace
というのもある。
import numpy as np
np.linspace(0, 1, 11)
# => array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
numpy.arange
| NumPy Manual
http://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html
Ruby 2014/09/08
# 0から9までの配列(範囲オブジェクト)
0..9
# 0から99までの配列(範囲オブジェクト)
0..10*10-1
上記は範囲オブジェクトで配列ではないので、配列にしたい場合は以下のようにする。
(0..9).to_a
# または
[*0..9]
..
の表記を使った範囲オブジェクトにメソッドを適用するにはカッコで囲む必要がある。
例
(1..100).each {|i| puts i}
sh (シェルスクリプト) 2015/03/16
seq
というコマンドで連番を改行区切りで作ることができる。
例
seq 5
# 出力結果
# 1
# 2
# 3
# 4
# 5
2つのパラメータを与えれば先頭の数字と最後の数字になる。
seq 3 5
# 出力結果
# 3
# 4
# 5
3つのパラメータを与えれば先頭の数字、間隔、最後の数字になる。
seq 3 2 7
# 出力結果
# 3
# 5
# 7
seq 3 2 10
# 出力結果
# 3
# 5
# 7
# 9
for
文に与えれば番号でループすることができる。
for i in $(seq 5); do
echo $i
done