トップ «前の日記(2010-06-20(Sun)) 最新 次の日記(2010-06-22(Tue))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2010-06-21(Mon) たぶん曇りだ

ジェネレータ?

>>> def genalpha(*args):
...     for i in range(*args):
...             yield chr(i)
... 
>>> x = genalpha(65,91)
>>> x.next()
'A'
>>> x.next()
'B'

文字列の変数は一度に作成したほうがいい、らしい

def mkstring():
        large_a = 65
        large_z = 90
        return [chr(x) for x in range(large_a,large_z + 1)]

を何度も実行させてみた。

times = 100000
largestring =''.join(mkstring() * times)
print("End")

これでPen4 1.8GHz な機器で、0.6秒ほどだった。

times = 100000
largestring = ''
for num in range(times):
        largestring += ''.join(mkstring())
print("End")

この方法だと、3秒くらいになった。

zipといっても圧縮じゃない

2.x と 3.x の違いに少々嵌った。
本に載ってたのは2.x向けのサンプル。

>>> L1 = [x for x in range(1,5)]
>>> L2 = [x + 4 for x in range(1,5)]
>>> L1, L2
([1, 2, 3, 4], [5, 6, 7, 8])
 
>>> zip(L1, L2)
[(1, 5), (2, 6), (3, 7), (4, 8)]

3.x では zip はイテレータを返すようになった

>>> zip(L1,L2)
<zip object at 0xb7bb110c>
 
>>> list(zip(L1, L2))
[(1, 5), (2, 6), (3, 7), (4, 8)]

リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。