【Python入門】リストの基本操作(追加・削除/検索/初期化など)について解説
Pythonでは、複数の値をまとめて管理する方法の一つとして「リスト(list)」があげられます。
リストの基礎をきちんと押さえておけば、より円滑にプログラミングを進めることが可能です。
この記事では、リストを扱う上での基本的な使い方(参照/追加・削除/初期化など)について解説していきます。
リスト(list型)の定義については、以下の記事でくわしく説明しています。
リスト内の要素を参照する
リスト内の要素を確認する場合は、リスト[]の形で記述します。
[]の中に参照したい要素の番号や範囲を指定することで、任意の値が取得可能です。
要素の番号で指定
前から数える場合は0始まり、後ろから数える場合は-1始まりとして、要素の番号を[]内に記述します。
ls = ["テスト", 123, False] # lsという変数に、リストを保持
print(ls[0]) # ls(リスト型)の、0番目(前から1つ目)の要素を表示
print(ls[-1]) # ls(リスト型)の、最後尾(後ろから1つ目)の要素を表示
= 実行結果 =
テスト
False
要素の範囲を指定(スライス機能)
範囲を使って要素を指定する場合は、スライス機能を使用します。
スライス機能の記述方法は、以下の通りです。
開始番号における指定は「~以上(範囲に含まれる)」、終了番号における指定は「~未満(範囲に含まれない)」になります。
特に、マイナスの番号を指定する際はややこしくなりがちなので、扱いには十分注意するようにしましょう。
ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # lsという変数に、リストを保持
print(ls[2:5]) # 番号が2以上5未満(2~4)の要素を表示
print(ls[-4:-1]) # 番号が-4以上-1未満(-2~-4)の要素を表示
print(ls[1:9:2]) # 番号が1以上9未満(1~8)の要素を、2つ刻みで表示
= 実行結果 =
[3, 4, 5]
[7, 8, 9]
[2, 4, 6, 8]
リストを編集する
リスト(list)は中身の要素を確認するだけでなく、要素を追加・削除したり、並び替えるといった編集も可能です。
要素を追加する
新たに要素を追加する場合は、append()
やinsert()
メソッドを使用します。
append()
ではリストの末尾に、insert()
では指定した番号に割り込む形で要素を追加することができます。
使用する際は、リスト(変数)の後に「.append(要素)」あるいは「.insert(番号, 要素)」の形で記述します。
なお、どちらも複数の要素をまとめて追加することはできないので注意してください。
ls = ["テスト", 123, False] # lsという変数に、リストを保持
ls.append(3.14) # ls(リスト)に「3.14」を追加
print(ls) # lsの中身を表示
ls.insert(0, "test") # lsの0番目(冒頭)に「test」を追加
print(ls) # lsの中身を表示
= 実行結果 =
['テスト', 123, False, 3.14]
['test', 'テスト', 123, False, 3.14]
要素を削除する
リスト内にある要素を指定して削除する場合は、remove()
メソッドやdel
文を使用します。
remove()
では対象となる要素を、del
文では要素の番号(あるいは範囲)を指定して削除できます。
使用する際は、削除したいリスト(変数)の後に「.remove(要素)」、あるいは「del リスト[番号(スライス可)]」の形で記述します。
なお、remove()
で指定する要素がリスト内に複数存在する場合、削除されるのは一番最初にある要素のみになるので注意してください。
ls = ["テスト", 123, False, "テスト", 3.14, "テスト"] # lsという変数に、リストを保持
ls.remove("テスト") # ls(リスト)から「テスト」を削除(最初の1つのみ)
print(ls) # lsの中身を表示
del ls[-1] # -1番目(末尾)の要素を削除
print(ls) # lsの中身を表示
del ls[0:2] # 番号が0以上2未満(0~1)の要素を削除
print(ls) # lsの中身を表示
= 実行結果 =
[123, False, 'テスト', 3.14, 'テスト']
[123, False, 'テスト', 3.14]
['テスト', 3.14]
要素の値を変更する
既にある要素の値を変更する場合は、「リスト[番号] = 変更後の要素」の形で記述します。
また、リストの番号を指定する際も、上で紹介した「スライス機能」の使用が可能です。
複数の要素を変更する場合は、変更後の要素をリストなどの形で定義する必要があります。
ls = [1,2,3,4,5,7] # lsという変数に、リストを保持
ls[-1] = 6 # ls(リスト)の-1番目(末尾)の要素を「6」に変更
print(ls) # lsの中身を表示
ls[2:] = ["test", "テスト"] # 3番目以降の要素を、リスト内の要素に変更
print(ls) # lsの中身を表示
= 実行結果 =
[1, 2, 3, 4, 5, 6]
[1, 2, 'test', 'テスト']
要素を並び替える(ソート)
リスト内にある要素を並び替える場合は、sort()
メソッドを使用します。
リスト(変数)の後に「.sort()」を記述することで、中の要素を昇順(0⇒9、a⇒z、あ⇒ん)に並び替えることができます。
ただし、sort()
が使えるのはリスト内のデータ型が同一の場合のみなので注意してください。
ls = ["apple", "あんこ", "1", "2", "banana", "いろ"] # lsという変数に、リストを保持
ls.sort() # ls(リスト)の要素を昇順に並び替え
print(ls) # lsの中身を表示
ls = ["apple", "cat", 1, 2, "banana", 3] # lsの中身の要素を変更(数値と文字列が混合)
ls.sort() # この場合はエラーが発生
= 実行結果 =
['1', '2', 'apple', 'banana', 'あんこ', 'いろ']
Traceback (most recent call last):
File "sample.py", line 6, in <module>
ls.sort()
TypeError: '<' not supported between instances of 'int' and 'str'
要素を降順 (9⇒0、z⇒a、ん⇒あ)や逆順にソートする方法は、別記事にて説明しています。
リスト内の要素を検索する
要素数が膨大になってくると、内部の状況が把握しきれなくなる場合もあります。
この先では、リスト内の要素から必要な情報を検索する方法について紹介します。
指定の要素が含まれているかを確認
指定の要素が存在するかどうかを確認する場合は、in
演算子を使用します。
使用する際は「要素 in リスト」を記述することで、要素が存在するかどうかを真偽値(TrueまたはFalse)で返します。
ls = ["テスト", 123, False] # lsという変数に、リストを保持
print(123 in ls) # ls(リスト)に「123」があるかどうかを表示
print("test" in ls) # lsに「test」があるかどうかを表示
= 実行結果 =
True
False
指定の要素の番号を確認
特定の要素の番号を確認したい場合は、index()
メソッドを使用します。
使用する際は、検索したいリスト(変数)の後に「.index(要素)」の形で記述することで、対象の番号を取得できます。
なお、index()
で指定する要素がリスト内に複数存在する場合、取得できるのは一番最初にある要素の番号のみになるので注意してください。
ls = ["テスト", 123, False, "テスト", 3.14, "テスト"] # lsという変数に、リストを保持
print(ls.index(3.14)) # ls(リスト)から「3.14」を検索して表示
print(ls.index("テスト")) # lsから「テスト」を検索して表示(最初の要素の番号のみ)
= 実行結果 =
4
0
指定の要素がいくつ含まれるかを確認
リスト内に要素がいくつ存在するかを確認したい場合は、count()
メソッドを使用します。
使用する際は、検索したいリスト(変数)の後に「.count(要素)」の形で記述することで、指定した要素の個数を取得できます。
ls = ["テスト", 123, False, "テスト", 3.14, "テスト"] # lsという変数に、リストを保持
print(ls.count("テスト")) # ls(リスト)内にある「テスト」の個数を表示
= 実行結果 =
3
リストの中身を初期化する
リストを初期化する方法として、 要素の削除や0(初期値)変換があげられます。
リストを空にする
リスト内の要素をすべて削除したい場合は、clear()
メソッドを使用します。
使用する際は、リスト(変数)の後に「.clear()」の形で記述することで、中身を空にできます。
また、変数に保持しているリストであれば「変数 = []」での初期化も可能です。
ls = ["テスト", 123, False] # lsという変数に、リストを保持
ls.clear() # ls(リスト)の中身を削除
print(ls) # lsの中身を表示
ls = ["テスト", 123, False] # lsに、再びリストを保持
ls = [] # lsの中身を[](空のリスト)に書き換える
print(ls) # lsの中身を表示
= 実行結果 =
[]
[]
すべての要素を0(初期値)にする
リスト内の要素を0に置き換えたい場合は、*
演算子を使用します。
リストを保持している変数に対し「変数 = [初期値] * 要素数」と記述することで、「初期値 を 要素数 分繰り返して作成したリスト」に差し替えられます。
なお、リストの要素数はlen()
関数で取得可能です。
使用する際は「len(リスト)」の形で記述し、指定したリストの要素数を取得します。
ls = [1, 2, 3, 4, 5] # lsという変数に、リストを保持
ls = [0] * len(ls) # lsを、0を要素数(len(ls))分繰り返したリストに書き換える
print(ls) # ls(リスト)の中身を表示
= 実行結果 =
[0, 0, 0, 0, 0]
まとめ
この記事では、リスト(list)を扱う上での基本的な使い方(追加・削除/検索/初期化など)について解説しました。
データ型のなかでも、リストは特に使用頻度の高い配列ですので、しっかりと基礎を押さえておくようにしましょう。