検索
連載

[解決!Python]タプルを作成するには解決!Python

Pythonでタプルを作成するには幾つかの方法がある。それらの方法と注意点を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「解決!Python」のインデックス

連載目次

# タプルの要素をカンマ「,」で並べる
t0 = 0, 1, 2
print(type(t0))  # <class 'tuple'>
print(t0)  # (0, 1, 2)

# カンマで区切った要素をかっこ「()」で囲む
t0 = (0, 1, 2# タプルであることが明示的になる
t0 = ()  # 要素が0個のタプル
print(t0)  # ()
print(len(t0))  # 0

t0 = (1# タプルではない
print(type(t0))  # <class 'int'>
t0 = (1,)  # 1要素のタプルは要素とカンマを記述する
print(t0)  # (1, )

# tuple関数を使う
t0 = tuple()  # 要素が0個のタプル
print(t0)
t1 = tuple([0, 1, 2])  # tuple関数に反復可能オブジェクトを渡す
print(t1)  # (0, 1, 2)

# 注意点
t0 = (0, 1, 2)
t0[0] = -1  # TypeError

l = [0, 1, 2# リストはその要素を変更可能
t = (l,)  # 変更可能なオブジェクトをタプルの要素とする
t[0][0] = -1  # OK
print(t)  # ([-1, 1, 2],)


タプルとは

 Pythonにおけるタプルは以下のような特徴を持ったオブジェクトだ。

  • その要素を変更できない
  • 要素の反復(イテレート)が可能
  • インデックスを使って要素にアクセスできる
  • 要素をアンパックして、複数の変数に要素を個別に代入できる

 本稿ではタプルの作成(初期化)方法を紹介する。

タプルを作成する

 タプルを作成するには以下の方法がある。

  • タプルの要素となる値をカンマ「,」で区切って並べる
  • tuple関数を呼び出す

 1つ目の方法ではタプルを作成することを明確にするかっこ「()」の有無や要素が1つだけのタプルの作成などで注意する点もある。

 以下はシンプルにカンマで区切ってタプルを作成する例だ。

t0 = 0, 1, 2
print(type(t0))  # <class 'tuple'>
print(t0)  # (0, 1, 2)


 1行目では3つの数値「0」「1」「2」をカンマで区切って並べている。これによりタプルが作成され、変数t0に代入されている。type関数にこれを渡してその型を調べると「<class 'tuple'>」となっている。また、print関数にこのタプルオブジェクトを渡すと、タプルの要素がかっこ「()」で囲まれて表示される。このかっこはタプルがタプルであることを明確にするものだ。

 上で見たように、タプルを作成するときにはカンマで区切ってその要素を並べるだけでよいが、かっこを使ってそれがタプルであることを明確にできる。以下に例を示す。

t0 = (0, 1, 2# タプルであることが明示的になる


 要素が0個のタプル(空のタプル)を作成するには以下のようにかっこのみを記述する。

t0 = ()  # 要素が0個のタプル
print(t0)  # ()
print(len(t0))  # 0


 最初の行では「()」として空のタプルを作成している。print関数に渡すと「()」とだけ表示され、これが要素を持っていないことが分かる。タプルやリストなどの要素数を調べるlen関数に渡すと要素がないので戻り値は「0」となる。

 要素を1個だけ持つタプルを作成するときには注意が必要だ。「(要素)」とするのではなく、以下のように最後にカンマを付加する必要がある。

t0 = (1# タプルではない
print(type(t0))  # <class 'int'>
t0 = (1,)  # 1要素のタプルは要素とカンマを記述する
print(t0)  # (1, )


 最初の行では「1」をかっこで囲んでいるが、これは式の評価順序を優先するためのかっことして処理され、結果は整数の1となる。3行目では「1」に続けてカンマを記述することでそれがタプルであるとPythonの処理系に伝えている。これによりタプルが作成される。

 tuple関数を使ってもタプルを作成できる。この関数は引数を指定しなければ空のタプルを作成し、反復可能オブジェクトを渡せば、それを基にタプルを作成する。

 以下に例を示す。

t0 = tuple()  # 要素が0個のタプル
print(t0)
t1 = tuple([0, 1, 2])  # tuple関数に反復可能オブジェクトを渡す
print(t1)  # (0, 1, 2)


 1行目では引数なしでtuple関数を呼び出しているので空のタプルが作成されている。3行目では反復可能オブジェクトの一つであるリストをtuple関数に渡しているので、その要素からタプルが作成されている。

注意点

Copyright© Digital Advantage Corp. All Rights Reserved.

[an error occurred while processing this directive]
ページトップに戻る