ゼロからのPython入門講座オブジェクトとリスト

リスト

Pythonのオブジェクトリストリストの操作リストのループ処理forループ

これまで、数値や文字列などの使い方を学んできましたが、こういった個別の値ひとつひとつではなく、一連の値を並べて、ひとまとめにした情報というのもよく必要になります。

たとえば、「東海道新幹線の停車駅」という情報は、「東京, 品川, 新横浜, 小田原, 熱海」 という、駅の名前の文字列を、停車順に並べた情報です。あるいは、「ある伝染病の毎日の感染者数を一週間分」という情報は、「100, 125, 110, 135, 93, 95, 93」のような、毎日の感染者数の整数を7つ、日付順に並べた情報です。このような、複数の値を決まった順番に並べ、ひとまとめにした情報は日常生活でもよく見かけます。

こういった、決まった順番に並んだ値で構成される情報は、Pythonでは リストオブジェクト で表現します。リストオブジェクトは、他のオブジェクトを 要素 として登録できるオブジェクトで、他のプログラミング言語では配列などと呼ばれることもあります。

リストオブジェクトの作成

リストオブジェクトは、次のように 角カッコ [] で作成します。

[要素1, 要素2, ...]

[] の間には、リストの要素となるオブジェクトを、, で区切って指定します。東海道新幹線の下りの停車駅は、文字列を格納したリストとして、次のように書けます。

In [4]:
stations = ["東京", "品川", "新横浜", "小田原", "熱海"]

リストをprint()すると、中の要素を出力します。作成したリストを出力して中身を確認してみましょう。

In [3]:
print(stations)
['東京', '品川', '新横浜', '小田原', '熱海']

stationsは、5つの文字列オブジェクトを要素とするリストオブジェクトです。

一週間分の伝染病の感染者数は、整数を格納したリストとして、次のように書けます。

In [43]:
cases = [100, 125, 110, 135, 93, 95, 93]
print(cases)
[100, 125, 110, 135, 93, 95, 93]

casesは、7つの整数オブジェクトを要素とするリストオブジェクトです。

要素が登録されていない、空のリストは [] だけで作成します。

In [6]:
empty_list = []
print(empty_list)
[]

要素の参照

リストオブジェクトに登録した要素は、次のような式で参照できます。

リストオブジェクト[要素の順番]

リストオブジェクトに登録した要素を参照するときは、リストオブジェクトに、参照する要素の順番を指定します。最初の要素を参照するときは 0、その次は 1、のように指定します。前述の新幹線の停車駅では、0 が東京、1が品川、… となります。

実際に、変数 stations リストから停車駅を参照してみましょう。

In [8]:
print(stations[0])
東京
In [9]:
print(stations[1])
品川
In [10]:
print(stations[0], stations[1], stations[2], stations[3], stations[4])
東京 品川 新横浜 小田原 熱海

インデックス

ここで指定している要素の順番のことを、インデックス と言います。インデックスの最大値は リストの要素数 - 1 となります。stationsリストの場合は要素が5つですので、インデックスの最大値は 4 となります。cases リストには要素が7つ登録されていますので、インデックスの最大値は 6 となります。

最大値を超えるインデックスを指定すると、IndexError というエラーが発生します。

In [11]:
stations[5]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-11-f387e245cf44> in <module>
----> 1 stations[5]

IndexError: list index out of range

リストオブジェクト[インデックス] で参照した要素は、式の中で普通の値や変数とおなじように使えます。たとえば、cases リストを使って3日分の感染者数の合計を求めるときには、次のように書けます。

In [44]:
cases = [100, 125, 110, 135, 93, 95, 93]

total = cases[0] + cases[1] + cases[2] # 7日前から5日前までの感染者数の合計を求める
print(total)
335


【Copyright © 2001-2020 python.jp】 【Privacy Policy】 python_japan