Takuyaです。
今回は Python のリスト型についてです。Python には複数の値をまとめて扱うデータ型がいくつかありますが、そのうちの1つがリスト型です。
リスト型と同じように複数の値をまとめて扱うデータ型としてタプル型、辞書型があります。タプル型、辞書型については下記を参照ください。


では、リスト型について、順番に見ていきましょう。
確認環境
本記事に記載していることは次の環境で動作を確認しました。
- Python 3.8.2
- macOS Catalina 10.15.4
リストを作成する
リストは [ ]
で作成します。[ ]は日本語だと角括弧、英語だとbracket(ブラケット)と呼びます。
[ ]内にはコンマ区切りで値(要素)を書きます。
num_list = [10, 20, 30, 40, 50]
print("type:", type(num_list))
print("num_list:", num_list)
リストには数値、文字列を入れたり、リストにリストを入れたり、True・Falseの真偽値(ブーリアン型)を入れることもでき、それらを混ぜて入れることもできます。
some_list = [123, 'abc', [1, 2, 3], True]
print("type:", type(some_list))
print("num_list:", some_list)
もちろん、変数を指定して作成することもできます。
a = 123
b = 'abc'
c = [4, 5, 6]
d = False
some_list = [a, b, c, d]
print("some_list:", some_list)
list() 関数を使って作成することもできます。
name_list = list("Takuya")
print("name_list:", name_list)
リストの値(要素)を読み出す
リストの値(要素)はインデックスを指定して読み出します。Python のインデックスは0(ゼロ)から始まります。
some_list = [123, 'abc', [1, 2, 3], True]
print("some_list[0]:", some_list[0])
print("some_list[1]:", some_list[1])
print("some_list[2]:", some_list[2])
print("some_list[3]:", some_list[3])
print("##########")
for i in some_list:
print(i)
また、インデックスに「-1」を指定すると、リストの一番後ろの値を読み出せます。「-2」は後ろから2番目の値になります。
some_list = [123, 'abc', [1, 2, 3], True]
print("some_list[-1]:", some_list[-1])
print("some_list[-2]:", some_list[-2])
スライス操作でリストの一部を切り出す
スライス操作でリストの一部分を切り出すことができます。
切り出す範囲 start と stop を指定して切り出す
スライス操作で切り出す範囲を指定してリストを切り出したい時は list_name[start:stop] の形式で記述します。
name_list = list("Takuya")
name_slice_list = name_list[0:4]
print("name_list:", name_list)
print("name_list:", name_slice_list)
上記の実行結果
name_list: ['T', 'a', 'k', 'u', 'y', 'a']
name_slice_list: ['T', 'a', 'k', 'u']
あれ?と思われた方、多そうですね。

0から4まで指定したんだから、「y」まで切り出されるんじゃないの?
同じようにと思われた方が多いと思いますが、stop で指定したインデックスの値は含まれないのです。
start <= index < stop と覚えてもよいですし、次のようなイメージで覚えてもらってもよいと思います。


またまた「あれ?」が聞こえてきそうですね。



インデックス番号は「6」まであるの?
確認してみましょう。
name_list = list("Takuya")
print(name_list[6])
上記の実行結果
IndexError: list index out of range
インデックスエラーになりました。インデックス番号は「5」までです。
しかし、、、
name_list = list("Takuya")
name_slice_list = name_list[3:6]
print("name_list:", name_list)
print("name_slice_list:", name_slice_list)
上記の実行結果
name_list: ['T', 'a', 'k', 'u', 'y', 'a']
name_slice_list: ['u', 'y', 'a']
エラーにならないんですね。これ、「100」を指定してもエラーになりません。例えば、「100:1000」でやってみます。
name_list = list("Takuya")
name_slice_list = name_list[100:1000]
print("name_list:", name_list)
print("name_slice_list1:", name_slice_list)
上記の実行結果
name_list: ['T', 'a', 'k', 'u', 'y', 'a']
name_slice_list1: []
エラーにはならず、値が何も入っていない空のリストが返ってきました。
謎仕様ですね。エラーにはなりませんが、変なインデックスを指定するのは止めておきましょう。
リストの最後の値までを切り出したい時は stop を省略して記述します。同じようにリストの先頭から切り出したい時は start を省略します。
name_list = list("Takuya")
name_slice_list1 = name_list[:3]
name_slice_list2 = name_list[3:]
print("name_list:", name_list)
print("name_slice_list1:", name_slice_list1)
print("name_slice_list2:", name_slice_list2)
増分 step を指定して切り出す
リストから1つ飛ばしで値を切り出したい時などは step を指定します。
list_name[start:stop:step]
の形式で記述します。
name_list = list("Takuya")
name_slice_list_consonant = name_list[::2]
name_slice_list_vowel = name_list[1::2]
name_slice_list_reverse = name_list[::-1]
print("name_list:", name_list)
print("name_slice_list_consonant:", name_slice_list_consonant)
print("name_slice_list_vowel:", name_slice_list_vowel)
print("name_slice_list_reverse:", name_slice_list_reverse)
リストに値を追加する
作成したリストに値を追加する方法を見ていきましょう。
リストの最後に値を追加する( append )
リストの最後に値を追加するには append メソッドを使います。
some_list = [123, 'abc', [1, 2, 3], True]
print("some_list:", some_list)
some_list.append(456)
print("some_list:", some_list)
位置を指定して値を追加する( insert )
位置を指定してリストに値を追加したい時は insert メソッドを使います。
list_name.insert(index) という形式で記述します。
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
num_list.insert(0, 999)
print("num_list:", num_list)
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
num_list.insert(5, 999)
print("num_list:", num_list)
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
num_list.insert(-2, 999)
print("num_list:", num_list)
リストから値を削除する
リストから値を削除する方法を見ていきましょう。
位置を指定してリストから値を削除し、削除した値を取得する( pop )
位置を指定してリストから値を削除し、削除した値を取得したい時は pop メソッドを使います。
list_name.pop(index) の形式で記述します。
index を省略した場合は一番最後の値が削除されます。
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print("num_list (before):", num_list)
print("num_list.pop(3):", num_list.pop(3))
print("num_list (after1):", num_list)
print("num_list.pop(-3):", num_list.pop(-3))
print("num_list (after2):", num_list)
print("num_list.pop():", num_list.pop())
print("num_list (after3):", num_list)
値を指定して、同じ値の先頭の要素を削除する( remove )
リストには値を指定して、同じ値の先頭の要素を削除する remove メソッドがあります。list_name(value) の形式で記述します。
num_list = [1, 2, 3, 1, 2, 3, 1, 2, 3]
num_list.remove(3)
print("num_list:", num_list)
num_list.remove(3)
print("num_list:", num_list)
num_list.remove(3)
print("num_list:", num_list)
del 文で削除する
del 文でもリストの値を削除できます。del 文での削除はスライス操作が可能です。
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del num_list[5]
print("num_list:", num_list)
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del num_list[3:8]
print("num_list:", num_list)
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del num_list[::2]
print("num_list:", num_list)
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del num_list
print("num_list:", num_list)
リストの値を変更する
リストの値は後から変更することができます。
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
num_list[5] = 999
print("num_list:", num_list)
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
num_list[3:6] = [123, 456, 789]
print("num_list:", num_list)
リストを結合する
リストを結合する方法を見ていきましょう。
足し算の演算子 + で結合する
足し算の演算子 + で結合することができます。
a = [0, 1, 2, 3, 4]
b = [5, 6, 7, 8, 9]
num_list = a + b
print("num_list:", num_list)
num_list = [0, 1, 2, 3, 4]
b = [5, 6, 7, 8, 9]
num_list += b
print("num_list:", num_list)
extend メソッドで結合する
リストの extend メソッドを使うことでも結合することができます。
num_list = [0, 1, 2, 3, 4]
b = [5, 6, 7, 8, 9]
num_list.extend(b)
print("num_list:", num_list)
リストの長さを確認する
リストの長さ=リストに含まれている値の個数を確認したい時は len()
関数を使います。
num_list = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
print("len(num_list):", len(num_list))
その他のリストのメソッド
指定した値がリストの中に何個あるかを数える( count )
count メソッドは指定した値がリストの中に何個あるかを数えてくれます。
num_list = [1, 2, 3, 4, 100, 999, 1, 3, 4, 999, 999, 999, 999]
print("num_list.count(1):", num_list.count(1))
print("num_list.count(999):", num_list.count(999))
値を並べ替える( sort )
sort メソッドを使うことでリストの値を昇順、降順で並び変えることができます。
昇順で並び替える場合は list_name.sort() 、
降順で並び替える場合は list_name.sort(reverse=True) と記述します。
num_list = [1, 2, 3, 9, 5, 12, 99, 33, 9.999]
num_list.sort()
print("num_list:", num_list)
num_list.sort(reverse=True)
print("num_list:", num_list)
str_list = ["xyz", "abc", "123"]
str_list.sort()
print("str_list:", str_list)
str_list.sort(reverse=True)
print("str_list:", str_list)
リストの並び順を逆にする( reverse )
ソートはせずに、単純にリストの並び順を逆にしたい場合は reverse メソッドを使います。
num_list = [1, 2, 3, 9, 5, 12, 99, 33, 9.999]
num_list.reverse()
print("num_list:", num_list)
その他にも。。。
リストには他にもメソッドが用意されています。help()
関数で確認できるので、確認してみてください。
以上です。
コメント