【徹底解説】リストの使い方

1. 概要

Pythonでは、値をまとめて使用するデータ構造としてリストがあります。

リストの使い方について紹介していきます。

2. リストの基本操作

2.1. リストの作り方

カンマで区切られた要素を[ ]で囲みリストを作ります。

test_1 = []
test_2 = [1, 2, 3]
test_3 = ['A', 'B', 'C']

print(test_1)
print(test_2)
print(test_3)
# Output
[]
[1, 2, 3]
['A', 'B', 'C']

別の作り方としてlist()関数で空リストを作ることもできます。

test = list()

print(test)
# Output
[]

Pythonのリストは要素の型が違っていても使用することができます。

test = [1, 'A', [3, 4]]

print(test)
# Output
[1, 'A', [3, 4]]

2.2. インデックスを使った要素の取得と変更

リストにインデックスを指定すれば、指定の値を取り出すことができます。

test = ['A', 'B', 'C', 'D', 'E']

print(test[0])
print(test[1])
print(test[2])
print(test[3])
print(test[4])
# Output
A
B
C
D
E

負のインデックスを指定すれば、末尾から取り出すこともできます。

test = ['A', 'B', 'C', 'D', 'E']

print(test[-1])
print(test[-2])
print(test[-3])
print(test[-4])
print(test[-5])
# Output
E
D
C
B
A

インデックスを指定した上で値を代入すると、リストの中の指定した値が書き換わります。

test = ['A', 'B', 'C', 'D', 'E']

# 変更前
print(test)

test[2] = 'New Data'

# 変更後
print(test)
# Output
['A', 'B', 'C', 'D', 'E']   # 変更前
['A', 'B', 'New Data', 'D', 'E']  # 変更後

2.3. リストのスライス

スライスを使えば一部を選択して取り出すことができます。

スライスの基本的な使い方は開始位置、終了位置、増分数を指定してやります。

書き方は:で区切ります。

list[開始位置:終了位置:増分数]
test = ['A', 'B', 'C', 'D', 'E']

# インデックス番号2~4の値を取り出す
print(test[2:4])

# インデックス番号1~4までの値を2個飛ばしで取り出す
print(test[1:4:2])
# Output
['C', 'D']
['B', 'D']

2.4. 要素の追加と削除

リストの要素を追加するにはappend()を使います。

test = ['A', 'B', 'C', 'D', 'E']

# 変更前
print(test)

test.append('F')

# 変更後
print(test)
# Output
['A', 'B', 'C', 'D', 'E']
['A', 'B', 'C', 'D', 'E', 'F']

指定したインデックスに要素を追加したい場合は、insert()を使います。

test = ['A', 'B', 'D', 'E']

# 変更前
print(test)

test.insert(2, 'C')

# 変更後
print(test)
# Output
['A', 'B', 'D', 'E']
['A', 'B', 'C', 'D', 'E']  # インデックス番号2の箇所にCが追加された

リスト要素の削除はremove()を使います。

test = ['A', 'B', 'C', 'D', 'E']

# 変更前
print(test)

test.remove('C')

# 変更後
print(test)
# Output
['A', 'B', 'C', 'D', 'E']
['A', 'B', 'D', 'E']

2.5 リストの結合

extend()を使えば二つのリストを結合することができます。

test_1 = ['A', 'B', 'C']
test_2 = ['D', 'E', 'F']

# 変更前
print(test_1)
print(test_2)

# test_1にtest_2が追加されます
test_1.extend(test_2)

# 変更後
print(test_1)
print(test_2)
# Output
['A', 'B', 'C']
['D', 'E', 'F']
['A', 'B', 'C', 'D', 'E', 'F']
['D', 'E', 'F']

他にも+=で結合することもできます。

test_1 = ['A', 'B', 'C']
test_2 = ['D', 'E', 'F']

# 変更前
print(test_1)
print(test_2)

test_1 += test_2

# 変更後
print(test_1)
print(test_2)
# Output
['A', 'B', 'C']
['D', 'E', 'F']
['A', 'B', 'C', 'D', 'E', 'F']
['D', 'E', 'F']



3. リストの各メソッド解説

他にもリストに関するメソッドはあります。

それらを紹介していきます。

3.1. pop

リストから要素を取り出し、それと同時に取り出した要素を削除します。

インデックスを指定しない場合は末尾の値が取り出され、インデックスを指定すると該当の値が取り出されます。

test = ['A', 'B', 'C', 'D', 'E']

# 末尾の値が取り出される
print(test.pop())

# 末尾の値が削除されている
print(test)

# インデックスを指定して値を取り出す
print(test.pop(2))

# 指定したインデックスの値が削除されている
print(test)
# Output
E
['A', 'B', 'C', 'D']
C
['A', 'B', 'D']

3.2. clear

リストの中のすべての要素を削除することができます。

test = ['A', 'B', 'C', 'D', 'E']

# 変更前
print(test)

test.clear()

# 変更後
print(test)
# Output
['A', 'B', 'C', 'D', 'E']
[]

3.3. index

リストの中で指定した値と等しい場合に、そのインデックス番号を返します。

指定した値が複数マッチする場合は、最初にマッチした要素のインデックス番号を返します。

指定した値が存在しない場合は、ValueErrorが返されます。

test = ['A', 'B', 'C', 'D', 'E', 'B', 'C']

print(test.index('B'))
# Output
1

3.4. count

指定した値の出現数を返します。

test = ['A', 'B', 'C', 'D', 'E', 'B', 'C']

print(test.count('B'))
# Output
2

3.5. sort

リスト内の要素を並べ替えます。

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

# 変更前
print(test)

test.sort()

# 変更後
print(test)
# Output
[3, 2, 1, 5, 4]
[1, 2, 3, 4, 5]

3.6. reverse

リスト内の要素をを反転させます。

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

# 変更前
print(test)

test.reverse()

# 変更後
print(test)
[2, 3, 1, 4, 5]
[5, 4, 1, 3, 2]

4. リストの応用編

リストには他にもいろいろな使い方があります。

それらを一部ですが紹介していきます。

4.1. inを使った値の有無の判定

指定した値がリスト内に存在するかどうかを判定します。

存在すればTrueが返り、存在しなければFalseが返されます。

test = ['A', 'B', 'C', 'D', 'E']

# 存在するパターン
print('A' in test)

# 存在しないパターン
print('F' in test)
# Output
True
False

4.2. joinによる文字列への変換

リスト内の要素を指定した文字列区切りで結合することができます。

test = ['A', 'B', 'C', 'D', 'E']

# カンマ区切りで出力
print(','.join(test))
# Output
A,B,C,D,E

4.3. lenによる長さの取得

リスト内に含まれる要素の数を取得します。

test = ['A', 'B', 'C', 'D', 'E']

print(len(test))
# Output
5

4.4. リストのアンパッキング

複数の変数に展開することをアンパッキングといいます。

リストはアンパッキングすることができます。

test = ['A', 'B', 'C']

print(test)

# リストをアンパッキング
val_1, val_2, val_3 = test

print(val_1)
print(val_2)
print(val_3)
# Output
['A', 'B', 'C']
A
B
C