[Python3] リストの使い方

Posted on 2019/03/02 in programming , Updated on: 2019/03/30

はじめに

Python におけるリストの基本操作。
リスト内には、数値、文字列を格納することができ、要素の追加、削除、置き換えが可能。 リストは、すべての要素をコンマで区切り、[]で囲うことで形成される。リスト内にリストを含めることも可能。(ネスト化)  

下記コードは、Jupyter Notebookを使用して1行1行実行している行くことを前提としています。

リスト作成

# 空のリスト
blank_list = []

# 数字のリスト
number_list = [1, 3, 5, 7]

# 複合リスト (整数、小数、文字列、リスト内リスト)
complex_list = [1, 2.5, 'a', 'b', ['hello', 'world']]

要素の抜き出し

インデックス演算子 []

リスト内の要素にアクセスするには、インデックス演算子[ ]を使用する。 Python では、インデックスは0から始まる。よって要素を4つ持つリストは、0から3までのインデックスを持つ。

number_list = [1, 3, 5, 7]

# 1つ目の要素を抜き出す
number_list[0]
# 1

# 4つ目の要素を抜き出す
number_list[3]
# 7

# ネスト化されたリスト内の要素を取り出す
nested_lst = [1,2,[3,4],[5,[100,200,['hello']],23,11],1,7]

nested_list[3]
# [5,[100,200,['hello']],23,11]

nested_list[3][1][2][0]
# 'hello'

負のインデックス演算子

負のインデックスを利用して、リストの最後から何番目という形で要素を取り出すことも可能。
-1 が一番最後の要素を指定する。

number_list = [1, 3, 5, 7]

# 後ろから2つ目
number_list[-2]
# 5

# 後ろから4つ目
number_list[-4]
# 1

スライス演算子

スライス演算子(:)を利用することで、リストをスライスして抜き出すことが出来る。

number_list = [1, 3, 5, 7]

# 2つ目から最後までの要素を抜き出す。
number_list[1:]
# [3, 5, 7]

# 1つ目から最後から2つ目までの要素を抜き出す。
number_list[:3]
# [1, 3, 5]

# 2つ目から3つ目までの要素を抜き出す。
number_list[1:2]
# [3, 5]

要素の変更・追加

リストは、要素を変更可能なデータ型であるため、要素の置き換えや追加等の操作が可能。

要素の追加 .append().extend()

ひとつの要素を追加する場合は、.append()、複数の要素(リスト)を追加する場合は、.extend()を利用する。

number_list = [1, 3, 5, 7]

number_list.append(9)
number_list
# [1, 3, 5, 7, 9]

number_list.extend([11, 13, 15])
number_list
# [1, 3, 5, 7, 9, 11, 13, 15]

また演算子 +* を使って、リストの連結や繰り返しをすることも可能。 この場合、上記の.append().extend()といった関数を利用した場合とは異なり、リストそのものが変更されるわけではない。

number_list = [1, 3, 5, 7, 9, 11, 13, 15]

number_list + [17, 19]
# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
number_list
# [1, 3, 5, 7, 9, 11, 13, 15] # number_listは変更されていない。

number_list * 2
# [1, 3, 5, 7, 9, 11, 13, 15 1, 3, 5, 7, 9, 11, 13, 15]
number_list
# [1, 3, 5, 7, 9, 11, 13, 15] # number_listは変更されていない。

要素の置き換え

代入演算子(=)を使って、単一または複数の要素を変更できる。

number_list = [1, 3, 5, 7, 9, 11, 13, 15]

number_list[0] = 100
number_list
# [100, 3, 5, 7, 9, 11, 13, 15]

number_list[2:5] = [500, 700, 900, 1100]
number_list
# [100, 3, 500, 700, 900, 1100, 13, 15]

要素の挿入 .insert()

.insert()を使用して1つの項目を、リスト内に挿入することが可能。.insert()の引数には、(挿入する位置, 挿入する要素)を与える。

number_list = [100, 3, 500, 700, 900, 1100, 13, 15]

# 2つ目に200を追加
number_list.insert(1, 200)
number_list
# [100, 200, 3, 500, 700, 900, 1100, 13, 15]

# 代入演算子を使って、複数の要素を挿入
number_list[3:3] = [1, 1, 1]
number_list
# [100, 200, 3, 1, 1, 1, 500, 700, 900, 1100, 13, 15]

要素の削除・取出し

del 文

del + スペース + リスト[インデックス] で、指定した要素を削除する。

number_list = [100, 200, 3, 1, 1, 1, 500, 700, 900, 1100, 13, 15]

del number_list[2]
number_list
# [100, 200, 1, 1, 1, 500, 700, 900, 1100, 13, 15] # 3つ目の要素'3'が無くなっている。

del number_list[2:8]
number_list
# [100, 200, 1100, 13, 15]    

.pop() .remove() .clear() メソッド

上記del文以外にも、特定の要素を削除する.remove(), 特定のインデックスにある要素を削除する.pop()(インデックスを指定しない場合は、最後の要素を削除)メソッドがある。
また、.clear()でリストを空にする。

number_list = [100, 200, 1100, 13, 15]

number_list.remove('200')
number_list
# [100, 1100, 13, 15]

number_list.pop(2)
# 13
number_list
# [100, 1100, 15]

number_list.pop()
# 15
number_list
# [100, 1100]

number_list.clear()
number_list
# []

最後に

Python には、.append()といったリストを操作するメソッドが他にもたくさん用意されています。
この記事には、よく使うものをあげましたが、さらに知りたい場合は、公式ドキュメントを参考ください。