0Pricing
Coding Interview Prep · レッスン

itertools で列挙する

直積、組み合わせ、順列を扱います

「itertools で列挙する」はCoddyKit上の無料Coding Interview Prepレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCoding Interview Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Coding Interview Prepコースには全4レッスンが含まれています。

ループはitertoolsに任せる

Pythonのitertoolsを使うと、組み合わせや順序を自動で生成できるため、ループのコードを減らし、ミスも少なくできます。🙂

まずインポートする

すべての機能が1つのモジュールに入っているので、まずimport itertoolsと書きます。その後はproduct、permutations、combinationsを直接呼び出せます。

import itertools

入れ子のループにはproduct

同じ選択肢に対する深い入れ子のループを置き換えるにはproductを使います。指定した範囲の選択肢から作られるすべてのタプルを生成します。

for combo in itertools.product(range(3), repeat=2):
    print(combo)

順序の列挙にはpermutations

順序が重要な場合、permutationsは要素のすべての並べ方を列挙します。小さな巡回セールスマン問題のような全探索に最適です。

for p in itertools.permutations([1, 2, 3]):
    print(p)

選択にはcombinations

順序が重要でない場合、combinationsはサイズrのグループをすべて選びます。テストする要素の部分集合を選ぶのに適しています。

for c in itertools.combinations([1, 2, 3, 4], 2):
    print(c)

permutationsとcombinationsの違い

重要な違いは順序です。permutationsでは(1,2)と(2,1)を別々に扱いますが、combinationsでは同じ選択として数えます。

増え方に注意する

permutationsの個数はn!の割合で増え、すぐに爆発します。nが11でさえ、並べ方はすでに4000万通りを超えるため、nは小さく保ちます。

これらは遅延評価される

これらの関数はジェネレーターです。巨大なリストを作らずに要素を1つずつ生成するため、ループ中もメモリ使用量を低く保てます。

確認処理と組み合わせる

候補を生成し、自分のテストに合格するものだけを残します。このパターンにより、難しい探索を短く読みやすいループにできます。

best = min(itertools.permutations(cities), key=tour_length)

combinations_with_replacement

同じ要素を繰り返し選ぶ必要がありますか?その場合はcombinations_with_replacementを使うと、グループ内で同じ要素を複数回選べます。

適切なツールを選ぶ

2つの質問を考えます。順序は重要か、要素の重複を許すか、です。その答えから、正しいitertools関数をすぐに選べます。

クイックチェック

順序を考慮せずに、6個の要素から3個を選ぶすべての方法を列挙する必要があります。

まとめ

product、permutations、combinationsを使って、候補をすっきりと列挙しましょう。順序が重要か、要素が繰り返されるかを考えて選び、増え方にも注意します。🚀

よくある質問

「itertools で列挙する」レッスンは無料ですか?

はい。「itertools で列挙する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Coding Interview Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Coding Interview Prepコースには全4レッスンが含まれています。

「itertools で列挙する」で何を学びますか?

直積、組み合わせ、順列を扱います ブラウザで直接実行するハンズオンコードでCoding Interview Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Coding Interview Prepを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCoding Interview Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「itertools で列挙する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCoding Interview Prepレッスンでコードを書いて実行できますか?

はい。すべてのCoding Interview Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 全探索も有効な戦略
  2. itertools で列挙する
  3. ビットマスクによる部分集合列挙
  4. 探索空間を賢く絞り込む
← Coding Interview Prepに戻る