初めてのPythonを読んでみる(6)

風邪引いた。鼻かぜ。だるくて色々めんどいです。

    • 8.1
      1. タイピングの手間が省ける
      2. 演算子の左側のオブジェクトの評価が一度で済む
      3. 速度面で有利な操作方法が自動的に選択される

ほうほう。

[takanori@dev python]$ cat L1.py
L = []
for x in xrange(50000):
    L = L + [x]  # 連結はオブジェクトコピーをやるので低速

[takanori@dev python]$ cat L2.py
L = []
for x in xrange(50000):
    L.append(x)  # 上書きなので速い

[takanori@dev python]$ cat L3.py
L = []
for x in xrange(50000):
    L += [x]     # apennd と同じ

[takanori@dev python]$ time python L1.py

real    0m17.793s  <--- 圧倒的に遅い
user    0m4.324s
sys     0m13.469s
[takanori@dev python]$ time python L2.py 

real    0m0.067s
user    0m0.032s
sys     0m0.036s
[takanori@dev python]$ time python L3.py

real    0m0.066s
user    0m0.048s
sys     0m0.016s

確かに。

    • 8.2
      • x を評価する時に a < x < b なんていう書き方も可能
      • これは面白いなぁ
      • 他の言語だと x > a && x < b となるところ
>>> 1 < 2 < 3
True
>>> a = 3
>>> 1 < a < 3
False
>>> 1 < a <= 3
True
>>> 1 < a != 3
False
>>> 
    • 8.3
      • print の出力先を変更してみる
>>> import sys
>>> sys.stdout = open('log.txt', 'a')
>>> print 1,2,3
>>> x,y,z = 4,5,6
>>> print x,y,z
>>> print z
>>> 
[takanori@dev python]$ cat log.txt 
1 2 3
4 5 6
6
      • >> を使ってリダイレクトもできる
>>> log = open('log.txt', 'a')
>>> print >> log, 10,20,30
>>> print 10,20,30
10 20 30
>>> 
[takanori@dev python]$ cat log.txt 
1 2 3
4 5 6
6
10 20 30