Python

Pythonのリスト型の基本

リスト型というのは、Pythonで非常に重要な型です。

リストは複数のデータのグループ

リスト型とは、複数のデータのグループです。
リスト型は[ ]で囲んで定義します。

例えば、

In [5]: a = [1, 2, 3, 4, 5]

In [6]: a
Out[6]: [1, 2, 3, 4, 5]

In [7]: type(a)
Out[7]: list

違う型をごちゃまぜにして入れる事もできます。

In [8]: a = [1, ‘a’, 2, ‘b’, 4]

In [9]: a
Out[9]: [1, ‘a’, 2, ‘b’, 4]

リストの要素をインデックス番号でとりだす

リストにはインデックス番号があります。

n個の要素があるリストはインデックス番号としては

0, 1, 2 ・・・ n-1
がふられます。

[要素0, 要素1, 要素2 ・・・・,要素n-1]

リストの中の要素は

リスト型の変数[要素のインデックス番号]

で取り出せます。

例えば先程の5個の要素からなるaにインデックス番号を指定して取り出すと

In [8]: a = [1, ‘a’, 2, ‘b’, 4]

In [11]: a[0]
Out[11]: 1
# 1番目の要素

In [12]: a[4]
Out[12]: 4
# 5番目の要素

となります。

aのインデックス番号は4までなので、5を入れるとエラーになります。

In [13]: a[5]
—————————————————————————
IndexError Traceback (most recent call last)
in
—-> 1 a[5]
IndexError: list index out of range

インデックスに負の番号を入れる

インデックス番号は負の記号をいれて、さかのぼって要素を指定することもできます。

[要素0, 要素1, 要素2 ・・・・,要素n-1]

[要素 -n, 要素 -(n-1)番目・・・, 要素 -2, 要素 -1]
とも書けます。

In [8]: a = [1, ‘a’, 2, ‘b’, 4]
In [14]: a[-1]
Out[14]: 4

In [15]: a[-5]
Out[15]: 1

です。

マイナス側にもインデックス番号を超えるとエラーが返ります。

In [16]: a[-6]
—————————————————————————
IndexError Traceback (most recent call last)
in
—-> 1 a[-6]

インデックスで指定した範囲をとりだす

これは混乱しやすいところです。

リストの要素 m から要素 n
までを取り出すには
リスト型変数[m : n + 1]

で指定します

反対に
リスト型変数[インデックス1: インデックス2]
で取り出される要素は、
インデックス1 から (インデックス2 – 1)
までです。

記号で書くと

aがリスト型のときに

a[m : n]
では、
要素 m から n-1 まで
が取り出される

取り出される個数は (n – m)個

In [21]: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [22]: a[3: 5]
Out[22]: [3, 4]

3から (5-1)の要素が取り出されます。

a[m : n]

m を省略し
a[:n]とすると
始めから 要素n-1まで
n を省略し、
a[m:]とすると
要素 m から最後まで

となります。

In [21]: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [23]: a[:4]
Out[23]: [0, 1, 2, 3]

In [24]: a[4:]
Out[24]: [4, 5, 6, 7, 8, 9]

マイナスでも使用できます。

In [25]: a[-6]
Out[25]: 4

In [26]: a[-4]
Out[26]: 6

In [27]: a[-6: -4]
Out[27]: [4, 5]
# a[-4]の要素は含まれない

 

このページのまとめ
  • リストは複数のデータを入れたグループ
  • 要素数nのリストの要素(インデックス)番号は0からn-1まで
  • 要素はマイナスの番号でさかのぼって指定できる a[-1]など
  • a[m : n]は要素 m から n-1 まで n-m 個の要素を取り出す
正直言ってリストの範囲指定は何度覚えても忘れてしまいます。
簡単なリストをつくって確認してから使用するといいでしょう。