fc2ブログ
組み合わせと順列
以前こんな記事を書いていましたが、Pythonで組み合わせと順列の処理をするには、標準のitertoolsが便利です。必要なときにいつもモジュールの名前が分からなくなるので、こうして書いて覚えよう作戦です。

>>> import itertools
>>> for c in itertools.combination([1,2,3,4,5],2):
... print(c)
...
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'module' object has no attribute 'combination'
>>> for c in itertools.combinations([1,2,3,4,5],2):
... print(c)
...
(1, 2)
(1, 3)
(1, 4)
(1, 5)
(2, 3)
(2, 4)
(2, 5)
(3, 4)
(3, 5)
(4, 5)
>>>

itertools.combinationsです。combinationでは無いので注意しましょう。
組み合わせを生成するアルゴリズムの実装は結構頭を使うのでよい練習になるのではないかと思います。とかいいながら、モジュール使ってしまうのですが。
スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

【2010/03/10 17:53】 | Python | トラックバック(0) | コメント(2) | page top↑
<<Pythonインタラクティブシェルでディレクトリの変更 | ホーム | CapsLockなんて死んでしまえばいいのに>>
コメント
これって、遅延評価じゃないですよね。

組み合わせや順列って、ちょっと量が多いと、メモリに入りきらなくなるじゃないですか。C++のnext_permutationのように、必要なときに取り出せるようになっていたほうが、何かと便利な気がします。
【2010/03/15 00:16】 URL | yabuki #-[ 編集] | page top↑
Re: タイトルなし
> これって、遅延評価じゃないですよね。

先生、お世話になっております。
そうなんです、やってびっくり、メモリ食います・・・
こんど、遅延評価なコード書いておきます。
【2010/04/04 10:27】 URL | 辻真吾(つじしんご) #-[ 編集] | page top↑
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://tanopy.blog79.fc2.com/tb.php/48-2ceb2e2a
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |