November 2015
Intermediate to advanced
360 pages
6h 16m
Japanese
itertoolsを使うのか?Python以外の言語の経験がある人がPythonを学び始めると、forループの書き方が異なることに衝撃を受けます。つまり、
for (i=0; i<N; i++) {
do_work(i);
}
と書く代わりに、rangeやxrangeという新しい関数を使って、
for i in range(N):
do_work(i)
と書きます。
これら2つの関数は、ジェネレータを使うプログラミングというパラダイムを深く理解するのに役立ちます。ジェネレータを完全に理解するために、まず関数rangeとxrangeを簡単に実装してみましょう。
def range(start, stop, step=1):
numbers = []
while start < stop:
numbers.append(start)
start += step
return numbers
def xrange(start, stop, step=1):
while start < stop:
yield start ❶
start += step
for i in range(0,10000):
pass
for i in xrange(0,10000):
pass
returnで返すのではなく、複数の値をyieldで返します。これによって、一見ふつうの関数が、繰り返し次の値を返すジェネレータに変わるのです。 ...Read now
Unlock full access