Part7:タプル

希「前回、海未ちゃんがリストの解説をしてくれたけど、今回紹介するタプルもそれとよく似たデータ型や」
海未「リストについて調べていたときにタプルも少し見たのですが、順序付けされた集合という意味では同じなんですよね」
希「せやね。ただ、内部的なデータの持ち方が違うんよ」
海未「リストは連結リストでしたが・・・」
希「そう、リストは飛び飛びのメモリ領域を結びつけてるけど、タプルは連続したメモリ領域を確保するんや」
海未「処理効率に差が出る、ということですね」
希「リストは先頭から順にたどらないとあかんかったやろ?タプルは任意の要素に同じ処理時間でアクセスできる。ランダムアクセス向きってことや」
海未「タプルの方が性能的に有利なのですか?」
希「そうとも限らん。値の変更や要素の追加削除はリストの方が早い。タプルだと、変更するにはメモリ領域新しく割り当ててそこへまるっとコピーしないといかん」
海未「リストは途中だけ変更できるから早いのですね」
凛「・・・なんか蚊帳の外にゃ。凛はそろそろサンプルコードを要求するにゃ」

凛「・・・なんか前回見た気がするよ?」
希「[]{}に変わっただけやしね」

凛「これも見たにゃ」
希「このあたりはリストと同じってことや」
海未「値の取得もリストと同じなのですか?」
希「いや、そこは違うんよ」

希「基本はこのelem関数や。これでインデックスを指定して値を取ってくる。リストよりシンプルやね」
凛「こっちの方が分かりやすいにゃ」
希「最初に言った通りで、タプルは変更には向かへん。できないわけじゃないけど・・・」

海未「あの・・・」
希「指定した場所の値を変更する感じやね」
海未「ええと・・・」
凛「たしかにリストよりめんどくさそうだにゃ」
海未「私は、ことりとは・・・いえ、しかし・・・」
希「そうそう、長さの取得も違うんやった」

凛「これ、lengthじゃだめなの?」
希「決まりがあってな。長さを計算する関数はlength、決まっている長さを返すのはsizeって名前を使う」
凛「あ、タプルは最初から長さが決まってるからsizeなんだね!」
希「よくできました。こういう命名規約も大事ってことや」

凛「リストとタプル、どっち使うか最初から決めるのは難しそうだにゃ~」
希「相互変換はできるようになってるから、局面に応じて切り替えは効くで」

希「次回マップは、凛ちゃんの番やね」
凛「任せるにゃ~!」


LINEで送る
Pocket


返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です