
リストは配列。
Pythonには基本的なデータ構造として、リスト・タプル・辞書があります。他のプログラミング言語でいうと、リストとタプルは配列、辞書は連想配列にあたります。配列は、同じ型の複数の値(Value)を、添字(Key)と一つの変数により管理する仕組みのことで、添字が0から始まる連続する整数の場合を配列(Array)、添字が任意の数値や文字列の場合を連想配列(Associative Array)といいます。
リスト(List)は、添字に0から始まる連続する整数をもつ配列です。以下の例の「list = [ 1, 3, 5, 7 ]」ように、括弧「[]」で括られた中にカンマ「,」区切りで値を指定し、変数に代入することで作成します。値は数値と文字列のいずれも許容されます。ちなみに「u’東京都’」のように、文字列の前に「u」とありますが、これはマルチバイト文字をユニコード指定する場合に用います。
なお、添字は0からの連続する整数が自動で割り振られるため指定はしません。また、ほとんどのプログラム言語では、配列の添字は0から開始しますが、例外としてR言語の配列の添字は1から開始するため注意が必要です。
リストの中の値を参照するには「list[0]」のように変数[添字]の形で指定します。ここでは「list[0], list[1]…」のように列記していますが、添字が連続する整数であるという特性を活かして、for文やwhile文などの繰り返し文を使って自動化できます。こちらについては次回の記事で説明します。
また「list[1:3]」のように、連続する添字の一部をスライス(切り出し)することもできます。この場合は、添字の1から3の直前(つまり2)までを切り出すという意味になります。
タプルはイミュータブルな配列。
タプル(Tuple)は、リストと同じく添字に0から始まる連続する整数をもつ配列です。以下の例の「tuple = ( 1, 3, 5, 7 )」ように、括弧「()」で括られた中にカンマ「,」区切りで値を指定し、変数に代入することで作成します。タプルの中の値を参照するには「tuple[0]」のように変数[添字]の形で指定します。また「tuple[1:3]」のように、連続する添字の一部をスライス(切り出し)することもできます。
これだけみると、リストとの違いはありませんが、タプルには以下のような特徴があります。
- 要素が追加・削除・変更ができない。
- 要素をくくる括弧は「()」を使用する。
- 使用メモリがリストに比べて小さい。
- 多くの場合でリストよりタプルの方が早く演算できる。
ちなみに、要素の追加・削除・変更ができないことをイミュータブル(Immutable)といい、プログラムを共同開発する際に、変数の値を勝手に変えられないようにしたい場合に有用です。対して、リストは要素の追加・変更・削除が可能であり、ミュータブル(Mutable)といいます。また、リストとタプルはlist()関数とtuple()関数を使って相互に変換できます。
辞書はキーバリュー型データベース。
辞書(Dictionary)は、添字に任意の数値または文字列を指定する連想配列です。以下の例の「dict = { 13:u’東京都’, 27:u’大阪府’, … }」のように、括弧「{}」で括られた中にカンマ「,」区切りでコロン「:」をはさむ形で添字と値を指定し、変数に代入することで作成します。添字と値ともに数値と文字列のいずれも許容されます。辞書の中の値を参照するには「dict[0]、dict[u’東京都’]」のように変数[添字]の形で指定します。添字に任意の数値や文字列を利用できるため、キーバリュー型のデータベースのような使い方ができます。
このように、リスト・タプル・辞書にはそれぞれの特徴があるため、それらを理解した上で、用途に合わせて使い分けていく必要があります。
次回は「ColabではじめるPython」最終回、条件分岐と繰り返しについて簡単に触れていきます。
関連する記事

須川 敦史
UX&データスペシャリスト
クロスハック 代表 / uxmeetsdata.com 編集長