第10回.タプル(tuple型、イミュータブル)
プログラミングにおいて覚えなければならないものとして配列があります。
Pythonの組み込み型に、リスト(list型)とタプル(tuple型)があります。
今回はタプル(tuple型)について解説します。
第9回.リスト(list型、配列)
目次
タプル(tuple型)とは
・リストはミュータブル(変更可能)なデータ型
・タプルはイミュータブル(変更不可)なデータ型
つまりオブジェクトの値を変更できるかどうかの違いです。
これについては、次の節で詳しく説明します。
・リストは、[]角括弧で作成
・タプルは、()丸括弧で作成

要素が1つの場合は、(値,)、このようにカンマを1つ付けなければなりません。
要素数が0の空タプルは、()だけにすることで作成できます。
()括弧を省略したり,カンマで終わるとタプルになります。

type()は組み込み関数です。
type()関数は、引数が1つだけの場合はobject の型を返します。
タプルの入れ子による多段階配列の作成

ミュータブルとイミュータブル
ミュータブルは、オブジェクトの値そのものを変更できるオブジェクトです。
イミュータブルは、オブジェクトの値そのものは変更できないオブジェクトです。
イミュータブルのオブジェクト:bool,int,float,complex,str,tuple,range
※全部ではありません、既出および近い回で説明する型だけです。

しかし、イミュータブルのtupleでは値を変更することはできません。

では、次の例ではどうでしょうか。

変更できないはずのtupleが違う値に変更出来ています。
しかしこれは、変数を新たに作成し直しているにすぎません。
変数にはそれを識別するid(識別値)があります。
識別値は、id()関数で取得できます。
オブジェクトの識別値(アドレス)を返します。
識別値は整数で、そのオブジェクトの有効期間中は一意かつ定数であることが保証されています。
有効期間が重ならない(同時に存在しない)2 つのオブジェクトは同じ id()値を持つ事はありえます。

このように、id(識別値)が違うという事は別の変数だという事です。
これに対して、listの値を変更した場合は、

このように同じid(識別値)で中の値が変更されています。
これは、listのメソッド(appendやsort)を実行した場合も同じです。
ただし、ミュータブルのlistでも変数に再代入した場合は別のid(識別子)になります。


id(識別子)も同じままになります。
タプル演算子
+演算子


*演算子

inとnot in
inは、含まれていればTrue
not inは、含まれていなければTrue

大文字小文字が区別されます。
list()関数とtuple()関数
tuple()関数は、引数のlist,tuple,rangeをtuole型に変換して返します。

タプルのインデックスとスライス
タプルのインデックス
Python | VBA | GAS | C++ | C# |
0 | 1 | 2 | 3 | 4 |
-5 | -4 | -3 | -2 | -1 |
タプル変数[index]

インデックスの範囲外を取得しようとするとエラーになります。
タプルのスライス
スライスの指定は、
タプル変数[start:stop]
タプル変数[start:stop:step]
スライスでは、stopにはリストの要素数(最大インデックス+1)以上が指定できます。
stepは飛び飛びで取得する場合に使用します。

stop-1つまりstopの1つ手前までが範囲になる点に注意してください。
インデックス範囲外の数値を指定してもエラーにならず、有効な範囲内の要素が取得されます。
タプルのアンパック
タプルを展開して複数の変数に代入することをアンパックと言います。
ただし、左辺の変数の数と右辺のタプルの要素数は一致している必要があります。
一致していない場合はエラーになります。

f'またはf"については、文字列操作のf-string(フォーマット済み文字列リテラル)
for文とタプル
for word in ("pthon","range","list","tuple"):
print(word)

while文とタプル
lst = ("pthon","range","list","tuple")
i = 0
while i < len(lst):
print(lst[i])
i += 1

tupleのメソッド
index()メソッド
値が存在しない場合はエラーになります。

count()メソッド

タプルの並べ替え(sorted関数)
呼び出し時に仮引数名が必須になります。
リストのそれぞれの要素から比較キーを取り出すのに使います。
例、str.lower、str.upper、len
True がセットされた場合、リストの要素は個々の比較が反転したものとして並べ替えられます。

アルファベット順にする場合は、keyにstr.lowerまたはstr.upperを指定します。

同じテーマ「Python入門」の記事
第7回.while文とデバッグ(ステップイン)
第8回.文字列操作(str型)
第9回.リスト(list型、配列)
第10回.タプル(tuple型、イミュータブル)
第11回.辞書(dict型)
第12回.組み込み関数一覧
第13回.関数の定義(def文)と引数
第14回.関数内関数(関数のネスト)とスコープ
第15回.lambda(ラムダ式、無名関数)と三項演算子
第16回.Pythonの引数は参照渡しだが・・・
第17回.リスト内包表記
新着記事NEW ・・・新着記事一覧を見る
シートコピー後のアクティブシートは何か|ツイッター出題回答 (2023-09-19)
Excel関数の引数を省略した場合について|ツイッター出題回答 (2023-09-14)
セル個数を返すRange.CountLargeプロパティとは|VBA技術解説(2023-09-08)
記号を繰り返してグラフ作成(10単位で折り返す)|ツイッター出題回答 (2023-08-28)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-08-24)
ランクによりボイントを付ける(同順位はポイントを分割)|ツイッター出題回答 (2023-08-22)
OneDrive使用時のThisWorkbook.Pathの扱い方|VBA技術解説(2023-07-26)
列幅不足による###表示や指数表示を判定する|VBA技術解説(2023-07-12)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-07-04)
シート関数のCOUNTIFS,SUMIFS,MAXIFSと同じ処理|Power Query(M言語)入門(2023-02-28)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロとは?VBAとは?VBAでできること|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.条件分岐(IF)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。