Pythonのitertoolsを用いてユーザーが入力したリストから指定した長さの組み合わせを見つけて表示させてみます。
今回はitertoolsモジュールを用います。このモジュール・ライブラリはPythonの標準ライブラリですので、事前にインストールする必要はありません。
■Python
今回のPythonのバージョンは、「3.10.9」を使用しています。(Windows11)(pythonランチャーでの確認)
■itertoolsを用いてユーザーが入力したリストから指定した長さの組み合わせを見つけて表示させる
では、itertoolsを用いてユーザーが入力したリストから指定した長さの組み合わせを見つけて表示させるスクリプトを書いていきます。
■コード
import itertools def print_combinations(items, length): # 組み合わせを生成 combinations = itertools.combinations(items, length) # 組み合わせを表示 for combination in combinations: print(combination) if __name__ == "__main__": try: # ユーザーがリストを入力 input_list = input("スペース区切りで要素を入力してください: ").split() # 入力された要素を適切な型に変換 items = [int(item) for item in input_list] # ユーザーが組み合わせの長さを入力 length = int(input("組み合わせの長さを入力してください: ")) # 組み合わせを表示する関数を呼び出す print_combinations(items, length) except ValueError: print("エラー: 正しい形式で入力してください。")
まずはitertools モジュールをインポートします。itertools モジュールは、Pythonの組み込みモジュールであり、イテレータを操作するための便利な関数を提供しています。
次に、print_combinations という名前の関数を定義します。この関数は2つの引数,パラメータであるitems と length を受け取ります。
itertools.combinations() 関数を使って、引数,パラメータ itemsから長さがlengthの組み合わせを生成し、それを combinations という変数に格納。combinations はイテレータとして扱われ、要素が必要な時に生成されることに注意してください。組み合わせは実際に生成されるまで計算されないため、非常に効率的です。
そして、forループを使って combinationsの要素を一つずつ取り出し、それをcombinationという変数に格納します。そして、print() 関数を使って組み合わせを表示します。
次にif __name__ == “__main__”: ブロックを記述します。このブロックはPythonスクリプトが直接実行された場合にのみ実行される部分です。これは通常、スクリプトをモジュールとして他のスクリプトからインポートしたときには実行されないようにするための一般的なパターンです。
このブロックでは、次のような処理が行われます。ユーザーにスペース区切りでリストの要素を入力してもらいます。input() 関数を使って入力を受け取り、split() メソッドを使ってスペースで区切ってリスト化します。 入力された要素は元々文字列型なので、int(item) を使ってそれぞれを整数型に変換し、新しいリスト items に格納。 ユーザーに組み合わせの長さを入力してもらいます。同様に input() 関数を使って入力を受け取り、int() 関数を使って整数型に変換します。 最後に、先ほど定義した print_combinations() 関数を呼び出して、items リストから指定された長さの組み合わせを表示します。
■実行・検証
このスクリプトを「c_main.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、入力されたリストの要素から2つずつの組み合わせが生成されて表示されることが確認できました。
コメント