たとえば、4桁の0と1の並びを考えます。0000とか0101とか1111などですが、全部で2の4乗で16通りあります。これらすべての組合せについて、羅列してくれるコードをPythonで書きたいと思ったときは、generator関数が便利です。
出力 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 桁数を増やすとあっという間に組合せ爆発を起こすので、yieldを使ったgeneratorを使うことで、メモリに入り切らなくなってしまう事態を回避できます。桁数がそろった方が見栄えがいいので、zfillで0詰めしています。 やっぱり、Pythonはとっても便利で使いやすいと実感しますが、GoogleがGoを出したり、iPhoneのおかげでObjective-Cの人気があがったりと、プログラミング言語界も相変わらず活況です。お正月先輩からきた年賀状には、「とりあえず今年はScalaから」と書いてありましたが、浮気はせずしばらくPythonがいいかなーと思うところです。 スポンサーサイト
|
if __name__ == "__main__":
a = ( i for i in range(2**4) ) for j in range(2**4): print ( "%04d" % int(format(next(a), 'b')) ) こんなんでいけそうな |
|
| ホーム |
|