ColabではじめるPython #03

リストは配列。

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」最終回、条件分岐繰り返しについて簡単に触れていきます。