はじめに
今回のブログでは、プログラムをつくるうえでたくさんの値やデータを扱うさいに便利な「リスト」をメインに、データの構造について説明していきます。
プログラミング未経験や学び始めの方に読んでいただくことを前提として、つまずきやすい部分(実際に筆者がつまづいた部分)や、リスト以外のデータ構造の扱い方についても述べていきます。
もくじ
- リストって何?-たくさんの値を入れておける入れ物-
- リストがあると何が便利?
- pythonにおける入れ物の種類と使い方-データ構造-
- リスト
- 辞書
- タプル
- 集合
- どんな「入れ物」が適しているか考える
- まとめ
リストって何?・・・たくさんの値を入れておける入れ物
リストとはいったい何なのでしょうか。ざっくり説明すると、「たくさんの値を入れておける箱」のようなものです。たとえば、プログラム上で多くの人の名前を扱いたいとします。
山田さん 田中さん 佐藤さん ・・・
このとき、(前回までに説明した)変数だけを用いると、一人ずつに変数をあてはめなくてはいけません。
name1=”山田” name2=”田中” name3=”佐藤” ・・・
これでは大変なので、プログラムでは山田さん、田中さん、佐藤さんをひとまとめのデータとして格納しておくことができます。このときに使うのが「リスト」です。
このように、データをまとめて記憶・管理する構造を「データ構造」といいます。このデータ構造のひとつがリストになります。
リストがあると何が便利?
では実際にリストはどのように使うのでしょうか?
リストを使うことによって、リスト内の複数のデータを順番に取り出すことができます。このとき、【勉強日記】プログラミングって何?【第1回】で説明した反復(ループ)、条件分岐の考え方を使ってリストから値を取り出すこともできます。
・リストの中身の要素を順番に、ひとつずつ取り出す(反復)
・順番に取り出すときに条件を付けられる 例:「入っている値が偶数だったら取り出す」
このあたりは反復や条件分岐について詳しく説明していないため、どのように応用するか想像しづらいと思います。今の段階では「たくさんの値が扱いやすくなって、便利」として考えると良いかもしれません。
pythonにおけるデータの入れ物の種類
pythonには「入れ物」がざっくり4種類ある
たくさんの値を格納できるデータ構造(入れ物)は、プログラミング言語によって少しずつ仕様が違います。今回はpythonで使えるデータ構造について代表的な4種類を説明します。
○リスト
X=[apple,apple,banana,orange,banana]
リストでは複数のデータをまとめることができ、数字や文字などあらゆる値を入れておくことができます。リストの中に要素を書いていくと、リスト内の要素には順番が割り振られます。
「一つずつ値を入れられる箱が連なっている」イメージを思い浮かべると分かりやすいと思います。また、リストの中身のひとつひとつの要素は、メソッド(関数って何?【第3回】で説明)によってあらゆる条件をつけて値を取り出すことができます。取り出すだけではなく、要素を追加したり、消したりすることもできます。
こういった性質から、順番が決まっているまとまったデータや、データの数が変動するようなプログラムに使用すると便利です。
○辞書型
X={”apple”:200, ”banana”:100,”orange”:150}
辞書型とは、キーと値をセットにして入れておけるデータ構造のことです。
辞書で単語を調べるとその内容を知ることができるように、キー(例:果物)に対して値(例:値段)が紐づいているのが特徴です。順番に割り振られた番号によって中身を取り出すリストと違い、人が覚えやすい文字などをキーとして、それに対応する値を取り出すことができます。
辞書型のデータでは、順番に関係なく探したいデータにすぐアクセスすることができます。
例えば、果物ごとに決まった値段が付いている場合、人の名前で年齢を探したい場合などに使用することができます。
○タプル
X=(”apple”,”banana”,”banana”,”orange”)
タプルとは、リストと同じように複数のデータをまとめることができるものです。
リストと違う点は、後から値を変更することができない点です。中身を変えられたくないデータの場合はタプルを使うと便利です。
後から中身を変えたくない、最初から決まったデータなので、決められた選択肢であったり、ゲームプログラムにおけるトランプのカードとして用いられたりします。
○集合
X={“apple”,”banana”,”orange”}
集合は、重複した値をもたない、また要素の順番をもたないデータ構造のひとつです。集合に要素を足したり、減らしたりすることができます。
たとえば、共通の友人を探したいときに集合のデータ構造を使用することができます。
どういうときに利用できそうか考える
これまで上げた各データの構造(入れ物)には、それぞれ使用できるメソッドが異なります。
例えば、リストでは要素である値をあとから変更できますが、タプルでは変更することができないといったものです。それぞれのメソッドの詳細は検索することで知ることができますが、プログラムを作ろうとするさいにどのデータ構造ならどのメソッドが使えるのか?をすべて知るのは難しいと思います。
著者がデータ構造を学んでいるときにつまづいた点は、「どういったデータのまとまりにはどのような入れ物がマッチするか」を考えることです。
例えば、トランプを使ったゲームのプログラムを作りたいと考えたときに、1枚のトランプをどう表現したらいいのか?自分の手札はどうやって表現する?といったものです。
このとき、自分が扱いたいデータの特性と、ざっくりつかんだデータ構造の特性をすり合わせてみることが重要です。最初は全く分からないことのほうが多いですが、プログラムを作っていくとなんとなく先が見えてくると思います。
まとめ
リストとは、複数の値を扱うことができる入れ物のようなものです。リストのように、複数の値を扱うことができる入れ物全般を「データ構造」といいます。
複数の値を変数を使ってひとつずつ書くことは大変なので、扱いたいデータをひとまとめにすることはとても重要です。リストを使うことによってデータを順番に取り出したり、条件を付けて一部分だけを取り出したりすることができます。
Pythonには、このデータ構造として代表的なものに
①リスト ②辞書 ③タプル ④集合
の4種類があります。これらの各データ構造では対応するメソッドを使用してデータを取り出したり、要素を足したり引いたりすることができますが、使用できるメソッドはバラバラです。
そのため、まずは自分が扱いたいデータの特性と、それぞれの入れ物(データ構造)の特性を比べてみて、どれが一番適しているか?どのように表せるか?を考えていくことが重要になります。
最初から「このデータのまとまりはどのように表現できるか?」を考えることは難しいですが、次第に少しずつ勘が身に付いていくと思います。
ここまで読んでくださってありがとうございました!
コメント