要旨
x = 3 if 0 < x < 10: print('1桁の正の整数')
>>> x = 3 >>> if 0 < x < 10: ... print('1桁の正の整数') ... 1桁の正の整数
詳細
あまり他の言語では見かけないが、こんな感じで複数条件を繋げることができる。
x = 3 if 0 < x < 10: print('1桁の正の整数')
>>> x = 3 >>> if 0 < x < 10: ... print('1桁の正の整数') ... 1桁の正の整数
あまり他の言語では見かけないが、こんな感じで複数条件を繋げることができる。
ちょっと腹痛
Enumerable#map { |item| ... }
-> [object]
配列等のオブジェクトに対し、map
メソッドを呼ぶ。Array
が返るが、Enumerable#lazy
を使って下記のように書けば、遅延評価することもできる。
val = (1..99999999).lazy.map { |i| i.to_s } => #<Enumerator::Lazy: ...> val.to_a # <= ここで実際に評価が始まるため、次の行が出力されるまで非常に時間がかかる => ['1', , ..., '99999999']
組み込み関数の map(function, iterable, ...)
-> イテレータ
Pythonは他の言語と違い、ArrayやListで返るのではなくイテレータ
で返る。イテレータはRubyでいうところの遅延評価のように、list()
に渡された時に初めて内部が評価される仕組みになっている。
Array.prototype.map(function)
Array
に対し、map
を呼ぶ事で評価される。基本的にはRubyとあまり大きく変わらない。
# 10以上の数(=最低で10)が欲しい場合 [1] pry(main)> [3, 10].max => 10 [2] pry(main)> [15, 10].max => 15
# 10を超えない数(=最高で10)が欲しい場合 [1] pry(main)> [3, 10].min => 3 [2] pry(main)> [15, 10].min => 10
(0..10).to_a.map(&:to_s) => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
「Proc展開」 "Proc coercion" 等の名前で呼ばれていることがあるが、特定の呼び名は決まっていないようだ。