数値や文字列などの基本データ型と並んで、Pythonでとてもよく使われるデータ型である「リスト」の基礎知識を説明する。
* 本稿は2019年5月31日に公開された記事を、Python 3.12.0で動作確認したものです(確認日:2023年10月16日)。
前回まではPythonの関数について4回に分けて取り上げてきた。今回は多数のデータをまとめて扱うためのリストの基本を紹介しよう。
⏩▶➡『Python入門』連載目次(全記事インデックス)はこちら
本連載ではこれまでに、整数、実数(浮動小数点数)、文字列などの値(オブジェクト)について紹介をしてきた。これらの値の性質や、それらに対して行える計算機能はそれぞれ異なっていて、通常、プログラミング言語ではそうしたデータの種類を「データ型」として分類している。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」と複数形になっているのは、このリストがまさに複数のプログラミング言語の名前を格納しているからだ。さらに第10回「for文による繰り返し処理」の「for文とリスト」で簡単に見たように、リストとfor文の組み合わせはPythonではよくあるパターンだが、そこで今回なら「for language in languages:」のように記述することで、分かりやすい(そして、整合性の取れた)ループ変数名を利用できるからだ。
for language in languages:
print('Hello ', language)
要素が1つもないリストも定義できる。これには角かっこ「[]」だけを書けばよい(実行結果は省略)。
emptylist = [] # 空のリスト(要素が1つもないリスト)を定義
print(emptylist) # 出力:[]
上では各かっこ「[]」を用いたリストの定義を見たが、リストはPythonに組み込みのlist関数でも作成できる。
list(iterable)
パラメーターに受け取った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)
実行結果を以下に示す。
リストを作成する方法としては、「リスト内包表記」と呼ばれる記法もある。これについては本稿の最後で取り上げよう。
Copyright© Digital Advantage Corp. All Rights Reserved.