PythonでタプルをN個ずつのチャンクに分割する方法
Pythonでタプルを「N」個の値ごとにチャンク(小さなグループ)へ分割したい場合、リスト内包表記を使うのが最もシンプルで効率的な方法です。
リスト内包表記とは、リストやタプルなどのイテラブル(反復可能オブジェクト)を簡潔に反復処理し、その場で新しいデータを生成できる記法のことです。数行のコードで済むため、可読性も高く、Pythonらしい書き方として広く使われています。
以下に、実際の動作を示すサンプルコードを紹介します。
サンプルコード
my_tuple_1 = (87, 90, 31, 85, 34, 56, 12, 5)
print("元のタプル:")
print(my_tuple_1)
N = 2
print("変数 'N' を初期化しました")
my_result = [my_tuple_1[i : i + N] for i in range(0, len(my_tuple_1), N)]
print("チャンク分割後のタプル:")
print(my_result)実行結果
元のタプル: (87, 90, 31, 85, 34, 56, 12, 5) 変数 'N' を初期化しました チャンク分割後のタプル: [(87, 90), (31, 85), (34, 56), (12, 5)]
コードの解説
- まず、8つの要素を持つタプルを定義し、コンソールに表示します。
- 次に、1チャンクあたりの要素数となる「N」の値を初期化します(ここでは N = 2)。
range(0, len(my_tuple_1), N)により、開始位置を0から始めてN個ずつスキップしながらインデックスを生成し、スライス[i : i + N]を使ってタプルを部分的に切り出していきます。- 切り出された各部分はタプルとして保持され、それら全体がリスト型としてまとめられます。
- この結果は変数
my_resultに代入されます。 - 最後に、その結果をコンソールに出力して確認します。
ポイント
この手法では、元のタプルの長さがNで割り切れない場合でもエラーにはなりません。たとえば要素が9個でN=2の場合、最後のチャンクは1個だけのタプル (x,) になります。スライス操作は範囲を超えても自動的に調整されるためです。
また、同様の処理は itertools.batched(Python 3.12以降)やジェネレータ関数を使って実装することもできますが、追加のインポート不要で手軽に使える点で、リスト内包表記による方法は多くの場面で有効です。
-
【初心者向け】Pythonでタプルをパック・アンパックする方法を徹底解説
Pythonには「タプル(tuple)」と呼ばれる、一度作成すると内容を変更できないイミュータブル(変更不可)なデータ型が用意されています。本記事では、Python 3.x以降を対象に、タプルのパッキング(詰め込み)とアンパッキング(取り出し)の基本的な使い方から、応用テクニックまでを実例とともにわかりやすく解説します。 タプルのパッキングとアンパッキングとは Pythonには、右辺の値を左辺の変数へ対応付ける非常に強力な代入機能があります。この対応付けによって、タプル内の複数の値を通常の変数へ展開することをアンパッキングと呼びます。逆に、通常の代入によって複数の値をひとつのタプルにまとめるこ
-
Pythonタプル(tuple)入門:作成・操作・削除の基本をコード例で解説
Pythonにおけるタプル(tuple)は、順序付け(ordered)かつ変更不可(immutable)という特徴を持つコレクションです。変更不可であるため、一度作成したタプルに要素を追加したり削除したりすることはできません。 タプルは丸括弧 () と、最低1つのカンマ , を使って作成します。 また、タプルはリストと同じようにインデックス指定やスライシングが可能ですが、スライスの結果もタプルとして返される点に注意しましょう。 タプルの作り方 colorsTuple = (red, green, blue) print(colorsTuple) 実行結果: (red, green, blue