プログラムの勉強をしていると必ず出てくる「配列」。
「便利な箱」が並んでいて、そこに数字や文字の値を入れていくイメージですが、配列の他に「リスト」というものもあります。
リストもデータを格納するのですが、データの出し入れの方法が配列とは違ってきます。
そこで、今回は配列とリストの使い方や違いを解説します!
データ構造
配列とリストの話の前に「データ構造」について理解しておきましょう。
数値や文字などのデータはプログラムの中で変数という入れ物の中に入れておくことで、様々な用途として使うことができます。
例えば、計算に使う数字や住所、ユーザー情報などを変数としてデータを格納しておきます。
この時、箱の中にどうやってデータを格納するか、どうやって呼び出すか、が重要になってきます。
この「データを配置するための方法」をデータ構造と呼びます。
プログラムにおけるアルゴリズムの出来の良さは、プログラムの特性にあったデータ構造にしているかがキーになります。
このデータ構造の種類として、「配列」や「リスト」が存在していることを覚えておきましょう!
配列の仕組み
データ構造の一つとしての「配列」ですが、一言で言うと「データを連続して並べて管理する」というものです。
配列はデータが連続して並んでいるのでシンプルなデータ構造と言えるかと思います。
配列の特徴は以下の通りです。
配列の特徴
- データの領域を予めメモリ上に確保(固定サイズ)し、その中にデータを格納していく。概念的に理解し易い。
- 配列の中の箱は添字で直接指定することで、データをダイレクトに取り出すことができる(メリット)
- データ領域が決まっているので、途中からデータの箱を挿入したり、削除したりが難しい(デメリット)
2次元配列
上記の配列は一番シンプルな「一次元配列」と呼ばれていますが、「配列の中に配列」を作ることもできます。
配列の中に配列を作っていくと二次元、三次元と次元が増えていきます。これを「多次元配列」と呼びます。
以下に2次元配列の例を載せてますが、添字が増えていきますが、添字の組み合わせで直接データの箱の中身を呼び出すことができます。
変数として複数の列を使いたい場合、二次元配列が活躍しますね。
リストの仕組み
続いて、もう一つのデータ構造の「リスト」です。
こちらも下の図を見て頂くと分かり易いかと思いますが、リストはデータとデータを数珠繋ぎにして管理します。
リストの扱うデータには、「ポインタ」と呼ばれる番号が付与されています。
この番号はメモリ上の位置をあらわす番号となっていて、次のデータのアドレスを指し示してくれています。
リストの特徴は以下のようになります。
リストの特徴
- 状況に応じてデータを格納する箱の数を増減したり(可変サイズ)、順番を入れ替えることができる。柔軟性が高い。
- データの追加、削除、変更に適している(メリット)
- 構造が複雑になるので効率が悪くなり、スピードも遅くなってしまう(デメリット)
リストはポインタの持ち方によって、「単方向リスト、双方向リスト、循環リスト」という3種類あることも覚えておくと良いでしょう。
まとめ
今回はデータ構造における配列とリストの違いに関して解説してきました。
配列とリストのまとめ
- 「データを配置するための方法」をデータ構造と呼ぶ
- 配列は固定サイズのデータの出し入れに適している
- リストは可変サイズのデータを追加、削除、変更に適している
- 配列、リストどちらかが優れているわけではなく、アーキテクチャによって使い分けをするのが良い
配列もリストもプログラミングにおいて必要な要素となりますが、言語によってどっちをメインで使うかも変わってくるみたいで、Pythonなんかはリストを基本的に使う感じですね。
配列やリストのデータ構造を理解することで、よりコンピュータが身近になりますね。
以上です!
データ構造としてよく出てくる「キューとスタック」に関しても以下の記事に記載してますので、併せて読んでみてください。