【Python】タプルをn個ずつのグループに分割する方法
Pythonでタプルを「n」個ずつのグループに分割したい場合、リスト内包表記を使うと非常に簡潔に実装できます。
まず前提として、タプルはイミュータブル(変更不可能)なデータ型です。一度定義した値は、インデックスを指定しても変更できず、変更を試みるとエラーが発生します。読み取り専用のアクセスが保証されるため、データの整合性を保ちたい場面で重要なデータ構造となっています。
リスト内包表記は、イテラブルなオブジェクトを反復処理しながら操作を行うための簡潔な記法です。これをスライスと組み合わせることで、タプルのグループ分割を数行で実現できます。
以下に具体的なサンプルコードを示します。
サンプルコード
my_tuple = (12, 34, 32, 41, 56, 78, 9, 0, 87, 53, 12, 45, 12, 6)
print("タプルの内容:")
print(my_tuple)
my_result = tuple(my_tuple[x:x + 3]
for x in range(0, len(my_tuple), 3))
print("分割後のタプル:")
print(my_result)
実行結果
タプルの内容: (12, 34, 32, 41, 56, 78, 9, 0, 87, 53, 12, 45, 12, 6) 分割後のタプル: ((12, 34, 32), (41, 56, 78), (9, 0, 87), (53, 12, 45), (12, 6))
コードの解説
- まずタプルを定義し、その内容をコンソールに表示します。
range(0, len(my_tuple), 3)により、0番目、3番目、6番目…と3つおきにインデックスを取得します。- スライス
my_tuple[x:x + 3]で、開始位置から3要素ずつ取り出し、新しいタプルとしてグループ化します。 - この処理はリスト内包表記(ジェネレータ式)を用いて記述されており、
tuple()で最終的にタプルへ変換しています。 - 処理結果は変数
my_resultに格納され、コンソールに出力されます。
応用:グループサイズを任意のnに変更する
グループサイズを固定値ではなく変数として扱えば、任意のサイズnで柔軟に分割できます。関数としてまとめると再利用性も高まります。
def split_tuple(t, n):
return tuple(t[i:i + n] for i in range(0, len(t), n))
my_tuple = (12, 34, 32, 41, 56, 78, 9, 0, 87, 53, 12, 45, 12, 6)
print(split_tuple(my_tuple, 3))
# ((12, 34, 32), (41, 56, 78), (9, 0, 87), (53, 12, 45), (12, 6))
print(split_tuple(my_tuple, 4))
# ((12, 34, 32, 41), (56, 78, 9, 0), (87, 53, 12, 45), (12, 6))
なお、要素数がnで割り切れない場合、最後のグループはn未満の要素数になります。この挙動は多くの用途で問題ありませんが、均等な分割が必須の場合は事前に要素数をチェックするなどの対応が必要です。
-
Pythonで文字列をタプルに変換する方法
Pythonで文字列をタプルに変換するには?Pythonの組み込み関数 tuple() を使うと、任意のシーケンスオブジェクトをタプルに変換できます。引数に文字列を渡した場合、各文字がそれぞれ独立した文字列要素として扱われ、カンマで区切られた形でタプルに格納されます。基本的な使用例>>> string = "Tutorialspoint">>> tuple(string)(T, u, t, o, r, i, a, l, s, p, o, i, n, t)このように、文字列「Tutorialspoint」は14個の文字要素を持つタプルへと変
-
Pythonでタプルを辞書に変換する方法【基本とキー・値の入れ替え】
Pythonでは、dict()関数を使うことで、タプルから辞書オブジェクトを簡単に作成できます。この関数は「タプルのタプル」(ネストされたタプル)を引数として受け取ります。各内側のタプルには、キーと値のペアが含まれている必要があります。 基本的な変換方法 最もシンプルなのは、キーと値のペアを持つタプルをそのままdict()に渡す方法です。 >>> t = ((1, a), (2, b)) >>> dict(t) {1: a, 2: b} この例では、タプル((1, a), (2, b))の各要素が、それぞれ辞書のキーと値として解釈され、結果として{1: a,