目標
「データ構造」について理解する。
(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の)「リスト」は、他のプログラミング言語でいう「配列」に相当します。(pythonの)「リスト」は「配列」を拡張した機能をもっていて、配列では本来行えない要素の追加が可能です。これは、(pythonの)「リスト」では実際に必要な記憶域より多くの記憶域を準備しているためです。また、名前の似ている「連結リスト」とは異なります。
- 配列は要素の数を決めたら途中から増やすことも減らすこともできません。
- 要素へのアクセスはランダムアクセスです(ピンポイントにアクセスできる)。
例:小学校のシューロッカー(下駄箱)が配列のイメージです。
- 連結リストはポインタを利用してデータを並べるので要素の増減が可能です。
- 要素へのアクセスはシーケンシャルアクセスです。(先頭の要素から順番に走査します。)
例:列車の連結が連結リストのイメージです。
(pythonの)「リスト」の特徴
(pythonの)「リスト」には次の特徴があります。
- 要素にはオブジェクトの参照が入るので型は共通でなくてもよい。
- 要素の変更が可能(ミュータブル)。
- 要素は先頭から順序をもつ(順番がある)。
- 要素の並びを走査(スキャンニング)できる。
- 要素にはインデックス(添え字)を利用してランダムアクセスができる。
- スライス式を利用して特定の範囲を取得できる。
- 要素数は任意で、リスト作成後も追加と削除ができる。
- 要素のソート(昇順降順の並び替え)や反転を行える機能が充実している。
- 要素は空でもよい。(論理値はFalseとなる。)
- 「リスト」はイテラブルオブジェクトのひとつ。
要素には「参照」が入っているイメージ
要素には値そのものが入っているのではなく、参照先が格納されています。
「ミュータブル」のイメージ
要素の値を変更できます。これは参照先を変更しています。
「インデックス」のイメージ
インデックスには「非負のインデックス」と「負のインデックス」があります。
非負のインデックス…リストの先頭を「0」として末尾に向けて1ずつ増加します。
負のインデックス…リストの末尾を「-1」として先頭に向けて1ずつ減少します。
イテラブルオブジェクト
「イテラブルオブジェクト」は繰り返し処理のできるオブジェクトのことです。実際に繰り返し処理で要素を順番に取り出すときには「イテレータオブジェクト」を生成して「イテレータオブジェクト」から要素を取りだします。
イテレータオブジェクトの生成には「iter関数(__iter__メソッド呼び出します)」利用します。(pythonのfor文を利用する場合はイテレータオブジェクトをfor文側で作成しています。)
生成されたイテレータオブジェクトには「__next__メソッド」が実装されていて、これが繰り返しの処理を行います。
今回は以上になります。次回はリストを使った練習を行います。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。