リストや辞書は、データ構造の種類(データを保存しておく形)で、プログラミングの初心者が少しややこしく感じるところです。
しかしプログラミングらしい強力な機能で、必須のモノですのでしっかり学習しましょう。
リストも辞書も複数のデータを格納することができて、それを取り出したり、データを追加したりできるモノ(オブジェクト)です。
それぞれ格納の仕方や取り出し方などが異なっていますが、どちらもデータを格納する保管庫のようなモノで、コンテナと呼ばれています。
他言語について詳しく解説することはしませんが、これらの言い方が、同じ言葉なのに言語が違うと少し意味が違っていたり、同じ概念を違う言葉で表したりしますのでいろいろな本を読んだり、調べたりしていると混乱します。
Pythonにおいては、リストと辞書というデータの形があると理解しておいてください。
オブジェクトについて
入門書を読み進めて、リストや辞書の項目に差しかかってくると「オブジェクト」という言葉を頻繁に目にするようになると思います。
Pythonでは値や変数などのプログラムの構成要素を「オブジェクト」と呼びます。リストや辞書も「オブジェクト」です。
学習を進めるうちにこの「オブジェクト」という言葉がたくさん出てきてよく分からなくなると思いますが、今の段階では深く考えなくて大丈夫です。私も避けてました。
とても重要な概念ですので、最終的にはしっかり理解しなくてはならないですが、超初心者がほぼ間違いなくつまずくところでもあります。
学習を進めるうちになんとなく分ってくると思いますので、最初にしっかり理解しようとがんばらなくていいと思います。
Pythonではプログラムを構成するモノをなんでも「オブジェクト」と呼ぶんだなぁぐらいに思っていてください。
リスト
リストは要素(数値、文字列等)を順番に格納します。この順番(インデックス)がリストでは重要です。
角カッコ[ ]で囲んで表し、それぞれの要素をカンマで区切ります。
[ ‘A’, ‘B’, ‘C’ ] や [3, 5, 9, 2, 6 ]のような感じです。[ ‘F’, 12, ‘dog’, ‘山田’ ] のように数値や日本語が混ざっても構いません。一番目(一番左)がインデックス0で、その次の要素にインデックス1が充てられています。[ ‘F’, 12, ‘dog’, ‘山田’ ] の場合、0が’F’で、3が’山田’です。
通常は変数に代入して使用します。
animal = [ ‘dog’, ‘cat’, ‘mouse’, ‘cow’ ] こんな感じ。
要素を取り出す際は、変数[ インデックス ]とします。mouseを取り出したい場合は、
animal[ 2 ]とすればOKです。
尚、マイナスでインデックスを表示することで後から指定することもできます。
[ -1 ]が最後の要素を表します。辞書
辞書は順番が無く、「key」と「value」というペアで要素を格納します。繰り返しますが、リストと違って順番は関係ありません。
波カッコ{ }で囲んで表し、key : valueで要素を記述します。リスト同様、それぞれの要素はカンマで区切ります。
{ dog : ‘ワン’ , cat : ‘ニャー’ , mouse : ‘チュー’ }のように記述します。
数値や日本語が混ざっても問題ありません。
やはり変数に代入して使うことが多いです。
animals = { ‘dog’ : ‘ワン’ , ‘cat’ : ‘ニャー’ , ‘mouse’ : ‘チュー’ } こんな感じ。
要素を取り出す際は、変数[ key ]とします。’チュー’を取り出したい場合は、
animals[ ‘mouse’ ]とすればOKです。
既にあるkeyに別のvalueを記述すると、上書きされ、新たなkeyとvalueを記述すると要素が追加されます。
タプル
リストと同じ構造のタプルというオブジェクトもあります。ほとんどリストと同じように考えていただいて構いませんが、タプルは要素を変更できません。追加や削除もできません。
丸カッコ( )で囲んで表し、リスト同様それぞれの要素をカンマで区切ります。
なぜ、リストと同じようなデータ構造のタプルが存在するのか?リストを使えばいいんじゃないか、と思うかもしれませんが、データの中には変えたくないもの、不変的なものも存在します。
今はまだピンとこないかもしれませんが、プログラムの途中で、うっかり書き換えられたら困るようなデータをタプルで保管するのだと覚えてください。
リストの中の辞書、辞書の中のリスト
そろそろややこしくなってきたかもしれませんが、これらリストや辞書は互いにその要素として入れることができます。
リストの要素に辞書を入れたり、辞書の要素にリストを入れたりできるということですね。
もちろんリストの中にリストを入れることもできます。
data = [ [1,2,3],[‘a’,’b’,’c’]] こんな感じです。
ふたつ目のリストを取り出したければ、data[1]、2つ目のリストの2番目の要素を取り出したければ、data[1][1]とします。
ちょっとややこしいかもしれませんが、数値も文字列もリストも辞書もすべてオブジェクト(こういう感じでに出てきます)なので、同じように扱うことができるということですね。
慣れればそれほど難しくはありません。いろいろと試してみて、どのように表示されるか見てみましょう。