以前こんな記事を書いていましたが、Pythonで組み合わせと順列の処理をするには、標準のitertoolsが便利です。必要なときにいつもモジュールの名前が分からなくなるので、こうして書いて覚えよう作戦です。
>>> import itertools >>> for c in itertools.combination([1,2,3,4,5],2): ... print(c) ... Traceback (most recent call last): File " 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では無いので注意しましょう。 組み合わせを生成するアルゴリズムの実装は結構頭を使うのでよい練習になるのではないかと思います。とかいいながら、モジュール使ってしまうのですが。 スポンサーサイト
|
これって、遅延評価じゃないですよね。
組み合わせや順列って、ちょっと量が多いと、メモリに入りきらなくなるじゃないですか。C++のnext_permutationのように、必要なときに取り出せるようになっていたほうが、何かと便利な気がします。 Re: タイトルなし
> これって、遅延評価じゃないですよね。
先生、お世話になっております。 そうなんです、やってびっくり、メモリ食います・・・ こんど、遅延評価なコード書いておきます。 |
|
| ホーム |
|