初めてのPythonを読んでみる(7)
- 9章 ifステートメント
-
- 9.2
- [], () 内は改行可能。インデントレベルも無視
- 9.2
-
- 9.3
- if で評価した結果戻されるのが、true や false でなく、オペランドになっているオブジェクトである点に注意
- 9.3
>>> 2 or 3, 3 or 2, 2 and 3, 3 and 2 (2, 3, 3, 2)
-
-
- ruby でも実験
-
irb(main):005:0> 2 or 3 => 2 irb(main):006:0> 3 or 2 => 3 irb(main):007:0> 2 and 3 => 3 irb(main):008:0> 3 and 2 => 2
ruby でも python 同様、オペランドが戻ってくるみたい。
-
-
- 変数に値を代入する時に、or を使うテクニックがある
- 最初に true を返したオペランドが代入される
-
>>> a = [] or {} or [1] >>> a [1]
- 10章 whileループとforループ
-
- 10.2
- while ... else ... という表記が可能 (for文でも可能)
- while の条件式の評価が false だったときに else ブロックが実行される
- 10.2
>>> def echo(x): ... while x: ... print x, ... x = x[1:] ... else: ... print 'none.' ... >>> >>> echo('') none. >>> echo('foobar') foobar oobar obar bar ar r none.
while ((c = it.next()) != EOF) { ... }
-
- 10.3
- for 文は、シーケンスオブジェクトであればなんでも適用可能
- 10.3
>>> for (x,y,z) in (1,2,3), (4,5,6), (7,8,9): ... print x,y,z ... 1 2 3 4 5 6 7 8 9
-
-
- 各要素に添え字でアクセスしたい場合は range をうまく使う
-
>>> L = range(10) >>> L [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in range(len(L)): ... L[i] += 5 ... >>> L [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
- 11章 Pythonのドキュメント
特筆すべき事項なし。
- 12章 関数の基礎
- 12.2
- Python では関数はファーストクラスオブジェクト
- 12.2
-
- 12.3
- 特定の型を想定してコードを書けば、関数の応用範囲がそれだけ狭まることになる
- どの型に対応させるか、ではなくどの「インターフェース」に対応させるか、を考えて関数を実装せよ
- 12.3
このサンプルを打ち込んで動かしてみて、インターフェースを考えろといっている意味が理解できた。これはまさに、Java の Interface に対する考え方だね。
>>> def intersect(s1, s2): ... L = [] ... for i in s1: ... if i in s2: ... L.append(i) ... return L ... >>> >>> intersect('ocean', 'acean') ['c', 'e', 'a', 'n'] >>> intersect(range(10), range(2,8)) [2, 3, 4, 5, 6, 7]