目標
(pythonの)「リスト」のメソッドを利用して操作する。
(pythonの)「リスト」の操作方法
(pythonの)「リスト」の操作方法(メソッド)
メソッド:メソッドはクラスやオブジェクトを操作するために、その内部で定義した関数のことです。(他の言語ではメンバー関数と呼ばれたりします。)
優しく言い換えると、「オブジェクト専用で利用できる関数」といえます。(pythonの)「リスト」でもリストを操作するためのメソッドが、しっかりと準備されています。
これまで「リスト」を作成してきましたが、実はこの時、リスト内の要素に値が設定される以外にも、必要な処理(メソッド)が利用可能な状態になっています。
上のキャプチャの場合、リストの名前を利用して「list_num.append(x)」のようにメソッドを呼び出しリスト「list_num」を操作します。
appendメソッド
list.append(x)
https://docs.python.org/ja/3.11/tutorial/datastructures.html
リストの末尾に要素を一つ追加します。a[len(a):] = [x] と等価です。
list_num1に対してのみ要素の末尾に「100」を追加してみます。
list_num1 = [ 6, 3, 10, 8, 5 ]
list_num2 = [ 6, 3, 10, 8, 5 ]
list_num1.append(100)
print('list_num1:{}'.format(list_num1))
print('list_num2:{}'.format(list_num2))
実行結果
次のように「名前.メソッド」で「list_num」の「appendメソッド」が処理されたのが確認できます。
追加する要素を「リスト」で行います。
list_num1 = [ 6, 3, 10, 8, 5 ]
list_num2 = [ 6, 3, 10, 8, 5 ]
list_num1.append([100, 200, 300])
print('list_num1:{}'.format(list_num1))
print('list_num2:{}'.format(list_num2))
実行結果
リストが丸ごと最後の要素に追加されました。
リストの中にタプルを要素として設定することも可能です。
list_num1 = [ 6, 3, 10, 8, 5 ]
list_num2 = [ 6, 3, 10, 8, 5 ]
list_num1.append((100, 200, 300))
print('list_num1:{}'.format(list_num1))
print('list_num2:{}'.format(list_num2))
実行結果
extendメソッド
list.extend(iterable)
https://docs.python.org/ja/3.11/tutorial/datastructures.html
イテラブルのすべての要素を対象のリストに追加し、リストを拡張します。a[len(a):] = iterable と等価です。
extendメソッドを利用するとメソッドの引数に指定した「リスト」などのイテラブルオブジェクトの各要素をひとつづつ順番に取り出して追加してくれます。
「list_num1」にタプル、「list_num2」に文字列を指定して要素を追加してみます。
list_num1 = [ 6, 3, 10, 8, 5 ]
list_num2 = [ 6, 3, 10, 8, 5 ]
list_num1.extend((100, 200, 300))
list_num2.extend('abcdefg')
print('list_num1:{}'.format(list_num1))
print('list_num2:{}'.format(list_num2))
実行結果
list_num1 = [ 6, 3, 10, 8, 5 ]
list_num2 = [ 6, 3, 10, 8, 5 ]
list_num1 += (100, 200, 300)
list_num2 += 'abcdefg'
print('list_num1:{}'.format(list_num1))
print('list_num2:{}'.format(list_num2))
実行結果
insertメソッド
list.insert(i, x)
https://docs.python.org/ja/3.11/tutorial/datastructures.html
指定した位置に要素を挿入します。第 1 引数は、リストのインデクスで、そのインデクスを持つ要素の直前に挿入が行われます。従って、 a.insert(0, x) はリストの先頭に挿入を行います。また a.insert(len(a), x) は a.append(x) と等価です。
appendメソッドでは要素の追加として末尾が扱われていましたが、insertメソッドでは、第1引数のインデックスを利用して追加する位置を指定できます。
list_num1 = [ 6, 3, 10, 8, 5 ]
list_num2 = [ 6, 3, 10, 8, 5 ]
list_num1.insert(2, 100)
list_num2.insert(3, [100, 200, 300])
print('list_num1:{}'.format(list_num1))
print('list_num2:{}'.format(list_num2))
実行結果
removeメソッド
list.remove(x)
https://docs.python.org/ja/3.11/tutorial/datastructures.html
リスト中で x と等しい値を持つ最初の要素を削除します。該当する要素がなければ ValueError が送出されます。
removeメソッドでは同じ要素が複数存在する場合は、インデックス番号が最小のものが削除されます。
次の場合、list_num1にはインデックス番号で「1番目」と「5番目」に数値の「3」が存在します。このとき、removeメソッドで「3」の削除を行うと、インデックス番号「1番目」の要素のみが削除されます。
list_num1 = [ 6, 3, 10, 8, 5, 3, 9 ]
list_num2 = [ 6, 3, 10, 8, 5, 3, 9 ]
list_num1.remove(3)
print('list_num1:{}'.format(list_num1))
print('list_num2:{}'.format(list_num2))
実行結果
removeメソッドは利用時に注意が必要です。
指定した値がない場合は「ValueError」となります。このため、removeメソッドは「in演算子」などで値が存在するかを確認してから利用します。
list_num1 = [ 6, 3, 10, 8, 5, 3, 9 ]
list_num1.remove(7)
print('list_num1:{}'.format(list_num1))
実行結果
in演算子の利用後にremoveメソッドを使用した場合
lremove_value = int(input('削除したい数値を指定してください----->:'))
list_num1 = [ 6, 3, 10, 8, 7, 5, 3, 9 ]
if remove_value in list_num1:
list_num1.remove(remove_value)
print('list_num1:{}'.format(list_num1))
実行結果(値が存在する場合)
実行結果(値が存在しない場合)
popメソッド
list.pop([i])
https://docs.python.org/ja/3.11/tutorial/datastructures.html
リスト中の指定された位置にある要素をリストから削除して、その要素を返します。インデクスが指定されなければ、 a.pop() はリストの末尾の要素を削除して返します。この場合も要素は削除されます。 (メソッドの用法 (signature) で i の両側にある角括弧は、この引数がオプションであることを表しているだけなので、角括弧を入力する必要はありません。この表記法は Python Library Reference の中で頻繁に見ることになるでしょう。)
popメソッドは指定した要素の削除をするだけでなく、利用時に値を取り出していることが重要なポイントです。popメソッドでは、この動きを利用して削除したい値を別の変数に紐づけることができます。
次のプログラムではpopメソッドを利用して取り出した値を「pop_value」で紐づけて再利用可能にしています。
remove_index = int(input('削除したい要素をインデックス番号で指定してください----->:'))
list_num1 = [ 6, 3, 10, 8, 7, 5, 3, 9 ]
pop_value = list_num1.pop(remove_index)
print('指定したインデックスは「{}」です。削除する値は「{}」です。'.format(remove_index, pop_value))
print('list_num1:{}'.format(list_num1))
実行結果(インデックス番号が範囲内の場合)
実行結果(インデックス番号が範囲外の場合)「IndexError」となります。
次のプログラムではpopメソッドの引数部分に何も指定していません。
list_num1 = [ 6, 3, 10, 8, 7, 5, 3, 9 ]
pop_value = list_num1.pop()
print('インデックスを指定していません。削除する値は「{}」です。'.format(pop_value))
print('list_num1:{}'.format(list_num1))
実行結果(インデックス番号を指定しない場合)
clearメソッド
list.clear()
https://docs.python.org/ja/3.11/tutorial/datastructures.html
リスト中の全ての要素を削除します。del a[:] と等価です。
clearメソッドを利用すると全ての要素を削除できます。リファレンスにあるように「del文」と結果は同じとなります。「del文」については次回の記事で扱います。
list_num1 = [ 6, 3, 10, 8, 7, 5, 3, 9 ]
list_num1.clear()
print('list_num1:{}'.format(list_num1))
実行結果
今回は以上になります。次回は残りのメソッドについての記事となります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。