[Python] listの使い方

[Python] listの使い方

概要

  • pythonには複数のデータをまとめて管理する方法がいくつも用意されていて、
    その中でよく使われる型としてリスト(list : 他言語のarray)と辞書(dict : 他言語のmap)があります。
  • 今回はlistの使い方を簡単に整理しました。
  • dictの使い方はここのまとめました。
    [Python] dictの使い方

参考

リスト(list)

list

  • listは他言語のarrayと同じく複数のデータをまとめて管理するものです。
  • listの箱にデータを0から順番に追加していくイメージです。

初期化

  • listは[]でデータを囲んで初期化します。
  • 何も入れない空のlist(list_sample_1)もできなすし、
    データを追加したlist(list_sample_2)も初期化できます。
  • 他言語では中のデータ型を定義する必要があったりしますが、
    pythonのlistはデータを定義する必要がなく、同じ型にしなくてもエラーになりません。(list_sample_3)
list_sample.py
# listの初期化
# 空のlist
list_sample_1 = []
# int型のlist
list_sample_2 = [1,2,3]
# int, str, floatのlist
list_sample_3 = [1,"abc",2.0]

# 初期化したlistの出力
print(list_sample_1)
print(list_sample_2)
print(list_sample_3)

実行結果 :

[]
[1, 2, 3]
[1, ‘abc’, 2.0]

データの取得

index (インデックス)指定

  • データは0から順番にデータが格納されます。
  • list名では全データが取得できます。
  • データの順番は0から始まって、
    list[0]で1番目のデータ、list[1]で2番目のデータ、・・・を取得できます。
  • この0から始まる数字をindex(インデックス)と呼びます。
    list[index番号]
list_sample.py
# listの初期化
list_sample = [1,2,3,4,5]

# listの全データを出力
print(list_sample)

# 0番からデータが順番に格納
print(list_sample[0])
print(list_sample[1])
print(list_sample[2])
print(list_sample[3])
print(list_sample[4])

実行結果 :

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

0より小さいindex

  • 取得する数字は0より小さい数字もできます。
    0より小さいインデックスの場合は最後から遡ります。
list_sample.py
# listの初期化
list_sample = [1,2,3,4,5]

# listの出力
print(list_sample)

# indexが0より小さい場合は最後から遡って取得
print(list_sample[-1])
print(list_sample[-2])
print(list_sample[-3])
print(list_sample[-4])
print(list_sample[-5])

実行結果 :

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

範囲取得

  • データの範囲での取得も可能です。
  • list[(開始index番号) : (終了index番号+1)]のように入力します。
    例) index0からindex3まで → list[0:4]
      index1からindex2まで → list[1:3]
list_sample.py
# listの初期化
list_sample = [1,2,3,4,5]

# listの出力
print(list_sample)

# index0からindex3まで取得
print(list_sample[0:4])
# index1からindex2まで取得
print(list_sample[1:3])

実行結果 :

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

取得可能index範囲

  • indexは『-(データ数) ~ (データ数 – 1)』まで指定可能です。
    例) データ数 : 5 → -5 ~ 4
      データ数 : 10 → -10 ~ 9
  • 取得可能範囲外のindexを指定した場合は『IndexError』が発生します。
list_sample.py
# listの初期化
list_sample = [1,2,3,4,5]

# listの出力
print(list_sample)

# 上限を超えた場合はIndexError
print(list_sample[5])

# 下限を超えた場合もIndexError
print(list_sample[-6])

実行結果 :

IndexError: list index out of range

データの更新

  • データの更新はindexに list[index] = value で更新します。
  • 範囲を超えたindexを設定するとIndexErrorになりますので注意が必要です。
list_sample.py
# listの初期化、出力
list_sample = [1,2,3,4,5]
print(list_sample)

# データの更新、出力
list_sample[2] = 6
print(list_sample)

実行結果 :

[1, 2, 3, 4, 5]
[1, 2, 6, 4, 5]

データの追加 (append, insert)

  • データの追加は大きく2つの方法があります。
    • list.append(data) : 最後にdataを追加
    • list.insert(index, data) : インデックスを指定してdataを追加
list_sample.py
# listの初期化、出力
list_sample = [1,2,3]
print(list_sample)

# listの最後に4を追加、出力
list_sample.append(4)
print(list_sample)

# listのindex1(2番目)に5を追加、出力
# 指定したindexより後ろのデータは一つずつ後ろに移動されます。
list_sample.insert(1,5)
print(list_sample)

実行結果 :

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

データの削除 (pop, remove, del)

  • データの削除は次の方法があります。
    • list.pop() : 最後データを削除
    • del list[index] : インデックスを指定して削除
    • list.remove(data) : データを指定して削除
list_sample.py
# listの初期化、出力
list_sample = [1,2,3,4,5,6,7,8,9,10]
print(list_sample)

# listの最後の10を削除、出力
list_sample.pop()
print(list_sample)

# listのindex4(5番目)の5を削除、出力
# 指定したindexより後ろのデータは一つずつ前に移動されます。
del list_sample[4]
print(list_sample)

# listの中から8を探して削除、出力
# 削除したデータより後ろのデータは一つずつ前に移動されます。
list_sample.remove(8)
print(list_sample)

実行結果 :

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 6, 7, 8, 9]
[1, 2, 3, 4, 6, 7, 9]

データの初期化 (clear)

  • listの全データをクリア(全削除)はclearメソッドで行います。
  • listそのものの削除ではなく空のlistになります。
list_sample.py
# listの初期化、出力
list_sample = [1,2,3]
print(list_sample)

# listのクリア、出力
list_sample.clear()
print(list_sample)

実行結果 :

[1, 2, 3]
[]

データ数取得 (len)

  • list内にあるデータ数は len(list)で取得します。
list_sample.py
# listの初期化、出力
list_sample = [1,2,3]
print(list_sample)

# listのデータ数出力
print(len(list_sample))

実行結果 :

[1, 2, 3]
3

list内のlist (nested)

  • listのデータには定義も型の制限もないのでlistもそのままデータとして設定可能です。
  • データの追加、取得方法も全く同じです。
  • データの数が違うlistも、listではないデータも同じlist内に入れることができます。
list_sample.py
# list1の初期化
list_sample1 = [1,2,3]

# list2の初期化
list_sample2 = [4,5,6]

# list3の初期化
list_sample3 = [7,8,9,10]

# list4の初期化(list1, list2, list3を追加)
list_sample4 = [list_sample1,list_sample2,list_sample3,1]

# listの出力
print(list_sample1)
print(list_sample2)
print(list_sample3)
print(list_sample4)

実行結果 :

[1, 2, 3]
[4, 5, 6]
[7, 8, 9, 10]
[[1, 2, 3], [4, 5, 6], [7, 8, 9, 10], 1]

for文での利用

  • listのfor文は『for data名 in list名』にすることでlistのデータを順番に取得できます。
  • list内のデータをindex0から一つずつdataに保存、for文内でdataから利用できます。
list_sample.py
# listの初期化、出力
list_sample = [1,2,3,4,5]
print(list_sample)

# list_sampleのデータを一つずつ取得してdataに保存して出力
for data in list_sample:
  print(data)

実行結果 :

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

辞書(dict)との組み合わせ

dict

  • dictは他言語のhashmapと同じくデータをkeyとvalueの組み合わせで管理するものです。
  • dictは{}で囲んで定義します。
  • データ(value)はdict[key]で取得します。
  • [Python] dictの使い方
list_sample.py
# dictの初期化
dict_sample = {"data1" : 1, "data2" : 2}

# データはkeyから取得
print(dict_sample)
print(dict_sample["data1"])
print(dict_sample["data2"])

実行結果 :

{‘data1’: 1, ‘data2’: 2}
1
2

list内にdict

  • listのデータには型の定義も制限もないのでdict型をそのまま追加できます。
list_sample.py
# dictの初期化
dict_sample = {"data1" : 1, "data2" : 2}

# listの初期化、データにdictを追加
list_sample = [1,2,dict_sample]

# listの出力
print(list_sample)
print(list_sample[0])
print(list_sample[1])
print(list_sample[2])

実行結果 :

[1, 2, {‘data1’: 1, ‘data2’: 2}]
1
2
{‘data1’: 1, ‘data2’: 2}

dict内にlist

  • dictもlistと同じくデータの型の定義も制限もないのでlist型をそのまま追加できます。
list_sample.py
# listの初期化
list_sample = [1,2,3]

# dictの初期化、データにlistを追加
dict_sample = {"data1" : 1, "data2" : list_sample}

# listの出力
print(dict_sample)
print(dict_sample["data1"])
print(dict_sample["data2"])

実行結果 :

{‘data1’: 1, ‘data2’: [1, 2, 3]}
1
[1, 2, 3]

まとめ

  • 初期化 : list = [data]
  • データ取得 : list[index]
  • 追加 :
    • list.append(data)
    • list.insert(index, data)
  • 削除 :
    • list.pop()
    • list.remove(data)
    • del list[index]
  • 全データクリア : list.clear()
  • データ数取得 : len(list)