ジェネレータ式

月曜日, 1月 17th, 2011 by

ジェネレータ式とは、ジェネレータを作るための式。リスト内包記法の両端の括弧を[]から()に置き換えると、ジェネレータ式になる。ジェネレータ式で生成したジェネレータはリストと違い1度しか使用できない。(破壊的な動作をする)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> gen = (x**2 for x in range(10))
>>> for i in gen: #リストと同様にループ対象として指定できる。
...   i
...
0
1
4
9
16
25
36
49
64
81
>>> for i in gen: #1度使い終わったジェネレータは、再利用できない。
...   i
...

ジェネレータの利点と欠点

利点

  • メモリ使用量が少ない
    必要に応じて要素を1つずつ生成するのでメモリを節約できる。
  • 動作が高速
    必要に応じて要素を1つずつ生成するので、ジェネレータの生成は、リスト生成と比べて高速である。

欠点

  • 一度しか使えない
    値は1回しか取り出せない。
  • ランダムアクセスできない
    先頭要素からの順にしか値を取り出せない。

Facebook comments:

comments

Leave a Reply


Get Adobe Flash player
single