目標
「データ構造」について理解する。
(pythonの)「タプル」について概要を理解する。
(pythonの)「タプル」について特徴を理解する。
「データ構造」の概要
「データ構造」とは
「データ構造」とは、0個以上の複数のデータを扱いやすく形式化したもので、pythonには「リスト」「タプル」「辞書」「集合」などがあります。
下の表はWikipediaより引用しています。
(出典)https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0
例えば、「スタック」だと複数のデータは積み上げられるようなイメージで保管されます。積み上げられるように保管されるので、最初に保管されたデータを取り出す場合は、後から追加されたデータも全て取り除いて取り出す必要があります。
このように、格納の方法と操作のルールがデータ構造には存在します。
(pythonの)「タプル」の概要
(pythonの)「タプル」とは
(pythonの)「タプル」は、複数のデータに順番を付けてまとめたオブジェクトでタプルオブジェクトと呼ばれ、その型はtuple型です。タプルオブジェクトでは要素の数は0個以上、所持できる要素の型は自由でひとつのタプル内で共通である必要はありません。
(pythonの)「タプル」のイメージ
「リスト」と「タプル」
「リスト」と「タプル」の違い…「リスト」と「タプル」は複数のデータをまとめることや順序が存在すること、要素の型が同じである必要がないことなど共通点が多いですが、大きな違いは「リスト」は「ミュータブル」で「タプル」は「イミュータブル」という点です。
その他、プログラムとしての記述では「リスト」は「[]」を利用し、「タプル」は「()」を利用します。
(pythonの)「タプル」の特徴
(pythonの)「タプル」には次の特徴があります。
- 要素にはオブジェクトの参照が入るので型は共通でなくてもよい。
- 要素の変更不可(イミュータブル)。
- 要素は先頭から順序をもつ(順番がある)。
- 要素の並びを走査(スキャンニング)できる。
- 要素にはインデックス式を利用できるが代入式の左辺には利用できない。
- 要素にはスライス式を利用できるが代入式の左辺には利用できない。
- 累算代入演算子の演算はインプレースには行われない。
- 内包表記による生成は利用できない。
- スライス式を利用して特定の範囲を取得できる。
- 要素数は任意だが、タプル作成後は追加も削除も行えない。
- 要素は空でもよい。(論理値はFalseとなる。)
- 辞書のキーとして利用できる。
- 「タプル」はイテラブルオブジェクトのひとつ。
要素には「参照」が入っているイメージ(リストと同様)
要素には値そのものが入っているのではなく、参照先が格納されています。
「イミュータブル」のイメージ
要素の値を変更は行えません。
「インデックス」のイメージ(リストと同様)
インデックスには「非負のインデックス」と「負のインデックス」があります。
非負のインデックス…リストの先頭を「0」として末尾に向けて1ずつ増加します。
負のインデックス…リストの末尾を「-1」として先頭に向けて1ずつ減少します。
イテラブルオブジェクトとは
「イテラブルオブジェクト」は繰り返し処理のできるオブジェクトのことです。実際に繰り返し処理で要素を順番に取り出すときには「イテレータオブジェクト」を生成して「イテレータオブジェクト」から要素を取りだします。
イテレータオブジェクトの生成には「iter関数(__iter__メソッド呼び出します)」利用します。(pythonのfor文を利用する場合はイテレータオブジェクトをfor文側で作成しています。)
生成されたイテレータオブジェクトには「__next__メソッド」が実装されていて、これが繰り返しの処理を行います。
今回は以上になります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。