Python 書き換えられたくない配列 タプル型の使い方-MAYA アーティストのスクリプト入門-

python_tuple_basis_topimage

配列の中身を書き換えられたくない場合がありませんか?

Pythonで使える配列にリスト型がありますが、リスト型は中に入っている要素を書き換える事が可能です。

list = ["A","B","C"]

list[1] = "D"

print(list)


結果:

リストの”B”が”D”に書き換えられました。

[‘A’, ‘D’, ‘C’]


スクリプトを複数人が扱う事が前提のプロジェクトはもちろん、一人で作成保守管理をしていた所属チーム用のスクリプトを、他チームに移る為に保守管理を誰かに引き継いでもらう等、複数人で一つのスクリプトを扱う際、書き換えられたくない要素が並んだ配列がある場合はリスト型では無く書き換えることが出来ない配列タプル型を使うことが出来ます。



この記事ではPythonの書き換えられない配列、タプルの基本的な使い方を紹介します。


タプルの書き方

リスト型は

[]

で要素を囲みますが、タプル型は

()

で要素を囲みます。

tuple = (1,2,3,2,3,3,5,1,3)
print(tuple)


結果:

(1,2,3,2,3,3,5,1,3)


タプルは数字だけではなく文字列も要素に出来ます。

tuple = (1,2,"A","B","C",3,5)
print(tuple)


結果:

(1,2,"A","B","C",3,5)


タプルは「()」で要素を囲むと書きましたが、「()」で囲わず要素を「,」で並べるだけでもタプルになります。

tuple = 1,2,3,2,3,3,5,1,3
print(tuple)


結果:

「()」で囲わずに書きましたが出力すると「()」に囲われました。

(1,2,3,2,3,3,5,1,3)

タプルの要素を取得

リスト型から要素を取得する場合[インデックス]を指定します。

list = ["A","B","C","D","E","F"]
print(list[1])


結果:

リストの0から数えて1番目に並んでる”B”が出力されました。

B


タプル型も要素を取得する場合は[インデックス]を指定します。

tuple = ("A","B","C","D","E","F")
print(tuple[3])


結果:

タプルの0から数えて3番目の要素”D”が出力されました。

C


文字列のと同様に「:」で始まりのインデックスと終わりのインデックスを指定する事が出来ます。

tuple = ("A","B","C","D","E","F")
print(tuple[:4])


結果:

前から4番目までの要素を出力しました

('A', 'B', 'C', 'D')


ここでタプルは本当にリスト型のように要素を書き換えられないのか確認してみましょう。

tuple = ("A","B","C","D","E","F")
tuple[3] = "G"

print(tuple)


結果:

当然ですが「タプルオブジェクトでは要素の代入がサポートされていない」とエラーが出力されました。

TypeError: 'tuple' object does not support item assignment

タプルの指定した要素の数を取得

タプルの中に指定した要素が幾つ入っているのかを取得したい場合は

.count(要素)

を使います

tuple = (1,2,3,2,3,3,5,1,3)
print(tuple.count(3))


結果:

タプルの中に 3 が 4個 入ってる事が分かりました。

4

タプルの指定した要素の場所を取得

タプルの中で指定した要素が何番目に並んでいるのかを取得したい場合は

.index(要素)

を使います

tuple = (1,2,3,2,3,3,5,1,3)
print(tuple.index(2))


結果:

タプルの中で 2 が0から数えて1番目に並んでいる事が分かりました。 

1



〇〇番目以降の並び位置を取得したい場合

tuple = (1,2,3,2,3,3,5,1,3)
print(tuple.index(3,6))


結果:

0から数えて6番目の位置から後ろに並んでいる 3 の位置は 8 と取得されました。

8

タプル同士をまとめる

タプルは要素を書き換えることは出来ませんが、タプル同士を加算して要素を加える事は出来ます。

tuple2 = ("a","b","4") + ("h","a","g")
print(tuple2)


結果:

2つのタプルが一つのタプルまとめられました。

('a', 'b', '4', 'h', 'a', 'g')

タプルの要素をリストにして書き換える

タプルは要素を書き換える事は出来ませんが、タプルの要素にしたリストの要素は書き換える事が出来ます。

tuple_list = ([4,5,6,8],[1,2])
print(tuple_list[0])


結果:

タプルの要素がリストなので、リストが出力されました。

[4, 5, 6, 8]



要素のリスト内の値を取得します

tuple_list = ([4,5,6,8],[1,2])
print(tuple_list[0][3])


結果:

タプルの0番目の要素のリストから0から数えて3番目に並んでる 8 が出力されました。

8



要素のリストの値を書き換えます

tuple_list = ([4,5,6,8],[1,2])
tuple_list[0][2] = 90
print(tuple_list)


結果:

リストの0から数えて2番目に並んでる 6 が 90 に書き換えられました。

([4, 5, 90, 8], [1, 2])

まとめ

Pythonの書き換えられない配列、タプル型の基本的な書き方を紹介しました。

  • タプルは「()」で要素を囲む
  • タプルから要素を取得するには並び位置[インデックス]を指定する
  • タプルから指定要素の数を取得するには.count(要素)
  • タプルから指定要素の位置を取得するには.index(要素)
  • タプルの要素は書き換える事は出来ませんがタプル同士を加算する事は出来る
  • タプルの要素にしたリストの中身は書き換える事が出来る


自作のスクリプトツールに様々な機能を追加してコードを書いた本人でもスクリプト全体が把握出来なくなる場合を想定して、複数人でスクリプトを管理作成する場合意外でも、大事な要素が並んだ配列の場合は、安全のために書き換え出来ないタプルを使う方が良いでしょう。


Twitter Facebook Pocket LINE はてブ

おすすめの関連記事

コチラの記事も読まれています
あわせてよく読まれている記事