連載
» 2019年05月31日 05時00分 公開

Python入門:[Python入門]リストの基本 (1/4)

数値や文字列などの基本データ型と並んで、Pythonでとてもよく使われるデータ型である「リスト」の基礎知識を説明する。

[かわさきしんじ,DeepInsider編集部]
「Python入門」のインデックス

連載目次

 前回まではPythonの関数について4回に分けて取り上げてきた。今回は多数のデータをまとめて扱うためのリストの基本を紹介しよう。

多数のデータを扱う型

 本連載ではこれまでに、整数、実数(浮動小数点数)、文字列などの値(オブジェクト)について紹介をしてきた。これらの値の性質や、それらに対して行える計算機能はそれぞれ異なっていて、通常、プログラミング言語ではそうしたデータの種類を「データ型」として分類している。Pythonでは整数にはint型、浮動小数点数にはfloat型、文字列にはstr型という名前が付けられて分類されている。

 これらのデータ型は基本的に、一度に1つだけの値を扱える。だが、プログラムでは複数個のデータを一括して扱えると便利なことがよくある。例えば、文字列はそれ自体が1つのデータであるが、同時にこれらは一つ一つの文字をまとめたものでもある。1つの文字列として複数の文字を管理できるようになっているために、文字列はインデックスの指定やスライスを使ってその一部を取り出したり、各文字に対して繰り返し処理を実行したりできるようになっている。

文字列は一つ一つの文字が集まったもの 文字列は一つ一つの文字が集まったもの

 これと同様なことが、文字列以外についてもいえる。つまり、複数のデータを1つの変数で管理しながら、個々のデータ(これらを「要素」と呼ぶ)を取り出したり、場合によっては変更したりできると便利なことがある。そして、そのためにPythonでは次に示すデータ型が提供されている。

  • リスト:任意の型(整数、浮動小数点数、文字列など)のデータを格納できる。要素には順序があり、インデックスを用いて要素を指定できる。リストの要素は変更可能。他のプログラミング言語における「配列」的な使い方をする
  • タプル:任意の型(整数、浮動小数点数、文字列など)のデータを格納できる。要素には順序があり、インデックスを用いて要素を指定できる。リストとは異なり、タプルの要素は変更不可能
  • 辞書:キーと値の組で表されるデータを格納する。要素は順序を持たない(インデックスによる要素の指定ができない)。他のプログラミング言語における「連想配列」に相当する
  • 集合:数学でいう「集合」を扱うための型。各要素は重複することがなく、順序を持たない(インデックスによる要素の指定ができない)

 これらを「多数のデータを格納する」ことから「コレクション」とか「コンテナ」とかなどと呼ぶこともある。上では、大体の性質を列挙しているために、「順序」とか「変更可能」とか「重複」などの言葉が挙げられているが、今の時点ではこれらを深く理解する必要はない。性質の違うコレクションが幾つか用意されていることと、それぞれに適切な使いどころがある(であろう)ことだけを覚えておけばよい。

 本稿では、目にすることが最も多いであろうリストの基礎知識を取り上げる。次回はリストの操作について見ていく予定だ。

リストの定義

 リストを定義するには、角かっこ「[]」の中にそのリストに含めるデータをカンマで区切って並べていく。リストには任意の種類のデータを好きな数だけ格納できる。なお、リストに格納する個々のデータのことを「要素」と呼ぶ。要素には「0始まり」で番号(インデックス)が割り振られ、要素の値を使いたいときにはこれを使用する。

リストは角かっこ「[]」の中にその「要素」をカンマ「 」区切りで並べることで定義する,リストは角かっこ「[]」の中にその「要素」をカンマ「,」区切りで並べることで定義する

 ここでは、例として以下のようなリストを作り、変数languagesに代入しておこう(以下に示したPython、Ruby、PHPは全てプログラミング言語の名前)。

languages = ['Python', 'Ruby', 'PHP']
print(languages)

プログラミング言語の名前を要素とするリストを作成したところ

 上のコードをセルに入力して、実行したところを以下に示す。

実行結果 実行結果

 「['Python', 'Ruby', 'PHP']」のように、リストが表示されたことが分かる。これにより、変数languagesには次のように3つの要素を格納するリストが代入された(ここでは変数を「名札」チックな表現としている)。

リストを変数languagesに代入したことで、変数languagesはリストオブジェクトを参照するようになった リストを変数languagesに代入したことで、変数languagesはリストオブジェクトを参照するようになった

 ちなみにリストを代入した変数の名前が「languages」と複数形になっているのは、このリストがまさに複数のプログラミング言語の名前を格納しているからだ。さらに第10回「for文による繰り返し処理」の「for文とリスト」で簡単に見たように、リストとfor文の組み合わせはPythonではよくあるパターンだが、そこで今回なら「for language in languages:」のように記述することで、分かりやすい(そして、整合性の取れた)ループ変数名を利用できるからだ。

for language in languages:
    print('Hello ', language)

複数の要素を格納するリストには複数形の名前を付け、それを受けるループ変数には単数形の名前を付ける

 要素が1つもないリストも定義できる。これには角かっこ「[]」だけを書けばよい(実行結果は省略)。

emptylist = []  # 空のリスト(要素が1つもないリスト)を定義
print(emptylist)  # 出力:[]

空のリストの定義

list関数によるリストの作成

 上では各かっこ「[]」を用いたリストの定義を見たが、リストはPythonに組み込みのlist関数でも作成できる。

list関数

list(iterable)

list関数

 パラメーターに受け取ったiterable(反復可能オブジェクト)を基に、リストを作成する。

パラメーター 説明
iterable リストの作成に使用する反復可能オブジェクト。リストの要素は、iterableの要素と同じものになる。省略すると、空のリストが作成される
list関数のパラメーター


 list関数の引数には、反復可能オブジェクトを指定できる。省略すると、空のリストが作成される(各かっこ「[]」のみでリストを作成した場合と同じ)。反復可能オブジェクトには文字列、range関数の戻り値などが指定できる。リストを引数に渡すことも可能だ(その場合は、元のリストと同じ要素を持つ別のリストが新たに作成される)。また、後続の回で取り上げるタプルや集合などを渡すこともできる。その場合には元のオブジェクトと同じ要素を持つリストが作成される。これは、各種コレクションの間で型を変換する際に便利だ。

 以下に例を示す。

strlist = list('Python'# 'P'、'y'、't'、'h'、'o'、'n'を要素とするリストを作成
print(strlist)
intlist = list(range(10))  # 整数値0〜9を要素とするリストを作成
print(intlist)
somelist = list(intlist)  # リストからリストを作成
print(somelist)

list関数の使用例

 実行結果を以下に示す。

実行結果 実行結果

 リストを作成する方法としては、「リスト内包表記」と呼ばれる記法もある。これについては本稿の最後で取り上げよう。

       1|2|3|4 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。