Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでタプルをサブタプルに分割する方法

スライスを使ったタプルの分割

Pythonでは、スライス(スライシング)操作を利用することで、ひとつのタプルを複数のサブタプルに簡単に分割できます。ここでは、12個の整数を含むタプルを、各3要素ずつ4つのサブタプルに分ける例を紹介します。

基本的な考え方はシンプルです。元のタプルから「連続する3要素」をスライスで切り出し、それを順番にリストへ追加していくだけです。最終的に得られるのは、3つの数値を持つタプルが4つ格納されたリストになります。

コード例

>>> tup = (7, 6, 8, 19, 2, 4, 13, 1, 10, 25, 11, 34)
>>> lst = []
>>> for i in range(0, 10, 3):
    lst.append(tup[i:i+3])

>>> lst
[(7, 6, 8), (19, 2, 4), (13, 1, 10), (25, 11, 34)]

処理の流れを解説

range(0, 10, 3)は、開始位置として 0、3、6、9 というインデックスを順に生成します。それぞれの位置に対してtup[i:i+3]を実行することで、次のように3要素ずつの部分タプルが切り出されます。

  • i = 0 のとき → (7, 6, 8)
  • i = 3 のとき → (19, 2, 4)
  • i = 6 のとき → (13, 1, 10)
  • i = 9 のとき → (25, 11, 34)

このように、スライスの範囲指定がタプルの長さを超えてもエラーにはならず、自動的に有効な範囲までが取得されるため、安全に分割処理を行えます。

リスト内包表記によるより簡潔な書き方

同じ処理は、リスト内包表記を使うと1行で書くこともできます。

>>> tup = (7, 6, 8, 19, 2, 4, 13, 1, 10, 25, 11, 34)
>>> lst = [tup[i:i+3] for i in range(0, len(tup), 3)]
>>> lst
[(7, 6, 8), (19, 2, 4), (13, 1, 10), (25, 11, 34)]

len(tup)を範囲に指定すれば、要素数が変わってもそのまま使える汎用的なコードになります。状況に応じて、for文とリスト内包表記を使い分けるとよいでしょう。

  1. Pythonでタプルを定義するには?基本の作成方法をわかりやすく解説

    Pythonにおけるタプルとはタプル(tuple)は、Pythonの標準データ型のひとつで、複数のオブジェクトを順序付けて格納できるイミュータブル(変更不可)なシーケンスです。リストとよく似ていますが、一度作成した後は要素の追加・削除・変更ができないという点が大きな特徴です。タプルの基本的な定義方法タプルオブジェクトは、1つ以上のオブジェクトをカンマ(,)で区切って並べるだけで作成できます。各要素は必ずしも同じ型である必要はなく、整数・文字列・浮動小数点数・真偽値など、異なる型のオブジェクトを自由に混在させることができます。また、コレクション全体を丸括弧 ( ) で囲むこともできますが、これは

  2. Pythonタプル(tuple)入門:作成・操作・削除の基本をコード例で解説

    Pythonにおけるタプル(tuple)は、順序付け(ordered)かつ変更不可(immutable)という特徴を持つコレクションです。変更不可であるため、一度作成したタプルに要素を追加したり削除したりすることはできません。 タプルは丸括弧 () と、最低1つのカンマ , を使って作成します。 また、タプルはリストと同じようにインデックス指定やスライシングが可能ですが、スライスの結果もタプルとして返される点に注意しましょう。 タプルの作り方 colorsTuple = (red, green, blue) print(colorsTuple) 実行結果: (red, green, blue