BlankTar

about | blog | works | photo

追記: 強化記事(?)書きました。 pythonのリスト内包表記は凄い。すごく凄い。

ジェネレータってやつがあるじゃないですか。
def nums(step=1):
	i = 0
	while True:
		yield i
		i += step

for i in nums():
	print i
ってやると延々とカウントアップする、みたいなやつね。
メモリ消費が最小限で済む(+上記のような無限の配列も扱える)ので、もの凄い大きな配列とかに便利。

で、このジェネレータ。聞けばジェネレータ式というのがあるらしい。
リスト内包表記だと
[i*2 for i in range(100)]
みたいにやるのを
(i*2 for i in range(100))
とするだけ。

めっちゃ楽ちん。素敵。
もちろんこいつは入れ子にも出来る。便利だねー、いいねー。

ちなみに、ジェネレータオブジェクトを関数に渡したりする時は、括弧を省略できるみたいです。
sum(i*2 for i in range(100))
ではなく、
sum((i*2 for i in range(100)))
とすることが可能、ということ。括弧が一個少ない。

参考:クラス - Python 2.7ja1 documentation
< 世界最強のセキュリティソフト作ったったwww(ネタ pythonのisと==の違い >