Python - リスト(配列)

公開日:2019-03-04 更新日:2019-05-21
[Python]

1. 概要

リスト(配列)を使うと、1つの変数名で複数の値を保持できます。

2. リスト(配列)の生成・要素の追加・要素の取得

リストは [] で空のリストを生成して、append()で要素を追加できます。
リストを使う際に、変数名に list は使用しないでください。
Python の組み込み関数である list() が使用できなくなります。

#空のリストの生成
lst = []

#値の追加
lst.append(1)
lst.append(2)
lst.append(3)

#値の取得
print(lst[0])
print(lst[1])
print(lst[2])
1
2
3

3. リストの生成と初期値の設定

以下のようにしてリスト生成時に初期値の設定ができます。
lst = ["a", "b", "c"]

print(lst[0])
print(lst[1])
print(lst[2])
a
b
c

4. リストの要素数の取得

要素数の取得には len() を使用します。

lst = [1, 2, 3, 4, 5]

print(len(lst))
5

5. リストの要素の存在チェック

in で指定した値がリストに含まれているかどうかを取得できます。
lst = [1, 2, 3, 4, 5]

if (5 in lst):
	print("5が含まれています")

if (9 in lst):
	print("9が含まれています")
else:
	print("9が含まれていません")
5が含まれています
9が含まれていません

6. 要素があるインデックスの取得

index() でリスト内のインデックスを取得できます。
指定した値がリストに存在しない場合はエラーとなります。
lst = [10, 20, 30, 40, 50]
i = lst.index(30)
print(i)

#存在しない場合はエラー
try:
	i = lst.index(99)
	print(i)
except:
	print("Error")
2
Error

7. 要素の追加

リストの最後に要素を追加するは場合は append() を使用して、
リストの途中に追加したい場合は、insert(挿入先インデックス, 挿入する値) を使用します。

#index  0   1   2   3   4
lst = [10, 20, 30, 40, 50]
lst.insert(2, 25)
print(lst)
[10, 20, 25, 30, 40, 50]

8. 要素の変更

lst = [10, 20, 99, 40, 50]
lst[2] = 30

print(lst)
[10, 20, 30, 40, 50]

9. 要素の削除

リストから要素を削除するには、del を使います。
削除する方法として remove() もありますが、こちらはインデックスではなく、削除する要素の値を指定する必要があります。

lst = [10, 20, 25, 30, 40, 50]
del lst[2]

print(lst)

[10, 20, 30, 40, 50]

また、pop() を使うと、値を取得してから要素の削除を行えます。
これを利用して、リストをキューやスタックのように使うことができます。
引数に削除するインデックスを指定できます。
指定しない場合は、最後の要素が対象となります。

lst = [10, 20, 25, 30, 40, 50]
print( lst.pop() )
print( lst.pop(2) )

print(lst)
50
25
[10, 20, 30, 40]

10. リストの最後に複数の要素の追加

lst = [10, 20, 30]
lst = lst + [40, 50]

print(lst)
[10, 20, 30, 40, 50]

11. 複数の要素の追加と変更

リスト[開始インデックス:終了インデックス] = 追加・変更する値のリスト
で、1度に複数の要素を追加・変更ができます。

「開始インデックス >= 終了インデックス」の場合は、開始インデックスの場所に複数の要素が追加されます。
終了インデックスを 0 にしておけば、常に追加となります。

「開始インデックス < 終了インデックス」の場合は、その範囲の要素が置換されます。
開始インデックスの終了インデックスの間の要素が削除されて、
開始インデックスの位置に新しい要素が追加されます。
lst = [10, 20, 30, 40, 50]
lst[2:0] = [21, 22, 23]

print(lst)
[10, 20, 21, 22, 23, 30, 40, 50]

置換の場合
lst = [10, 20, 30000, 40000, 100]
lst[2:4] = [30, 40, 50, 60, 70, 80, 90]

print(lst)
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

12. リストの一部分の取得

リストのインデックスを、
[ 開始インデックス : 終了インデックス : 増減 ]
のようにして指定すると、リストの一部分を抽出した新しいリストを取得することができます。
終了インデックスの要素は含まれないため、注意してください。

#index  0   1   2   3   4   5
lst =  [  10, 20, 30, 40, 50 ]

print( lst[2:] )      #[2] ~ [4]
print( lst[:5] )      #[0] ~ [4]
print( lst[0:5] )     #[0] ~ [4]
print( lst[3:5] )     #[3] ~ [4]
print( lst[1:3] )     #[1] ~ [2] 
print("-----")
print( lst[:3] )      #[0] ~ [2]
print( lst[:5] )      #[0] ~ [4]
print("-----")
print( lst[0:5:2])    #[0][2][4]
print( lst[1:5:2])    #[1][3]
print("-----")
print( lst[5:0:-1])   #[4] ~ [1]
print( lst[5::-1])    #[4] ~ [0]
print( lst[::-1])     #[4] ~ [0]
print("-----")
print( [0,1,2][0:4] ) #[0] ~ [3]
print( list(range(0, 100)[0:5]) ) #[0] ~ [4]

[30, 40, 50]
[10, 20, 30, 40, 50]
[10, 20, 30, 40, 50]
[40, 50]
[20, 30]
-----
[10, 20, 30]
[10, 20, 30, 40, 50]
-----
[10, 30, 50]
[20, 40]
-----
[50, 40, 30, 20]
[50, 40, 30, 20, 10]
[50, 40, 30, 20, 10]
-----
[0, 1, 2]
[0, 1, 2, 3, 4]

13. 複数の要素の削除

lst = [10, 20, 21, 22, 23, 30, 40, 50 ]
del lst[2:5]

print(lst)

[10, 20, 30, 40, 50]