Python

Pythonでタプルを扱う方法について

By 2021年6月20日No Comments

この記事では、Pythonのタプルの使い方について解説します。

タプルはリストや辞書型といった複数の要素を管理するデータ型の一種になります。タプル内の要素は作成した後で、その要素を変更したり削除することができません。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト

タプルは下記のように要素を指定します。

(要素1, 要素2 要素3…)

name = ('ヤマダ', 'タナカ', 'ウエダ')
print(name)
print(type(name))

結果:

('ヤマダ', 'タナカ', 'ウエダ')
<class 'tuple'>

このようにタプルのデータ型で出力されているのが分かります。

右辺の( )を省略してもタプルのデータ型として出力することができます。

name = 'ヤマダ', 'タナカ', 'ウエダ'
print(name)
print(type(name))

結果:

('ヤマダ', 'タナカ', 'ウエダ')
<class 'tuple'>

要素が1つだけのタプルも作成できますが、カンマ(,)を要素の後に指定しないとタプル型にはなりません。

name = ('ヤマダ')
print(name)
print(type(name))

結果:

ヤマダ
<class 'str'>

タプル型ではなくstr型で出力されています。タプル型で出力するには要素の後ろにカンマを指定します。

name = ('ヤマダ',)
print(name)
print(type(name))

結果:

('ヤマダ',)
<class 'tuple'>

このようにカンマを指定することで要素が一つのタプル型を出力する事ができました。

Pythonでタプルの要素の取り出し方法

タプル内の要素を取得するには、作成したタプルに対してインデックス番号を指定することで要素を取得することができます。構文は下記になります。

タプル[インデックス]

タプル内に含まれているそれぞれの各要素には順番にインデックス番号が割り当てられています。最初の要素のインデックス番号が0 、次の要素が1と順に割り当てられています。負の値でも指定することができ、その場合は最後の要素を-1から順に割り当てられています。

                 0           1              2    

list = (‘ヤマダ’, ‘タナカ’, ‘ウエダ’)

                -3          -2            -1

name = ('ヤマダ', 'タナカ', 'ウエダ')
print(name[0])
print(name[-1])

結果:

ヤマダ
ウエダ

スライスでタプル内の要素を取得することもできます。構文は下記になります。

タプル変数名[最初のインデックス番号 : 最後のインデックス番号]

name = ('ヤマダ', 'タナカ', 'ウエダ')
print(name[1:3])

結果:

('タナカ', 'ウエダ')

このように、スライスで要素の取得する範囲を決めて出力する事ができました。

forループを使用することで、タプル内の要素を全て取り出すことができます。

name = ('ヤマダ', 'タナカ', 'ウエダ')
for names in name:
    print(names)

結果:

ヤマダ
タナカ
ウエダ

2次元配列のタプルもインデックス番号を指定して要素を取り出すことができます。2次元のタプルの要素を取り出すにはタプル名の後にインデックス番号を2つ指定します。

name = ('ヤマダ', 'タナカ', 'ウエダ'), ( 1, 2, 3)
print(name[0][1])
print(name[1][2]) 

結果

タナカ
3

このように2次元のタプルの要素の取り出す事ができました。1つ目のインデックス番号が1次元のタプルの要素の番号を指定して、2つ目のインデックス番号が2次元のタプルの要素の番号を指定している事になります。

Pythonでタプルの要素をリストに変換して要素を置換する方法

タプルの要素は変更する事ができないので新たな要素を置換しようとすると下記のようにエラーになります。

name = ('ヤマダ', 'タナカ', 'ウエダ')
name[1] = 1
print(name)

結果:

TypeError: 'tuple' object does not support item assignment

そこで、タプルの要素の変更などをしたい場合は一度リストのデータ型に変換する必要があります。タプルの要素をリストに変換するにはlist( )関数を使います。

name = ('ヤマダ', 'タナカ', 'ウエダ')
name = list(name)
print(name)

結果:

['ヤマダ', 'タナカ', 'ウエダ']

このようにタプルの要素がリストに変換されました。

さらに、リストに変換した要素は置換することができるので要素を置換してからtuple( )関数を使ってタプルの要素に戻す事ができます。

name = ('ヤマダ', 'タナカ', 'ウエダ')
name = list(name)
name[1] = 1
t_name = tuple(name)
print(t_name)

結果:

('ヤマダ', 1, 'ウエダ')

このように一度リストに要素を変換してからタプル型に戻す事で結果としてタプル内の要素を置換することができます。 

Pythonで分割代入をする方法

複数の変数にタプルの要素を分割代入して出力することができます。

name1, name2, name3 = ('ヤマダ', 'タナカ', 'ウエダ')
print(name1, name2, name3)

結果:

ヤマダ タナカ ウエダ

右辺のタプルの要素が一つずつ順番に代入されてるのが分かります。このような要素を分割して変数に代入する方法をアンパックと呼ばれます。

 一つの文字列を代入する場合は左辺の変数の数と右辺の文字数が同じ場合のみ分割代入する事ができます。

name1, name2, name3 = ('ヤマダ')
print(name1, name2, name3)

結果:

ヤ マ ダ

このように右辺の要素数と左辺に指定する変数の数が一致する必要があります。一致しない場合は下記のようなエラーになります。

name1, name2, name3 = ('ヤマダタナカウエダ')
print(name1, name2, name3)

結果:

ValueError: too many values to unpack (expected 3)

まとめ

この記事ではPythonでのタプルの要素の扱い方について解説しました。タプルの要素は変更ができないのでタプル内の要素の順番を変えたくないときや要素のデータを固定したい時などにタプルを利用します。以上、Pythonのタプルの扱い方についてでした。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト
HOSL

Author HOSL

More posts by HOSL