第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 ・・・新着記事一覧を見る
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
顧客ごとの時系列データから直前の履歴を取得する|エクセル雑感(2025-11-28)
ちょっと悩むVBA厳選問題|エクセル雑感(2025-11-28)
実績/予算ごとの3年間通算累計を出力|エクセル練習問題(2025-11-15)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
