05-Python

Python(Part.18)| python【リスト(利用編-3)】【リストのメソッド(1/2)】

python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...

目標

(pythonの)「リスト」のメソッドを利用して操作する。

(pythonの)「リスト」の操作方法

(pythonの)「リスト」の操作方法(メソッド)

メソッド:メソッドはクラスやオブジェクトを操作するために、その内部で定義した関数のことです。(他の言語ではメンバー関数と呼ばれたりします。)

ほわほわ

優しく言い換えると、「オブジェクト専用で利用できる関数」といえます。(pythonの)「リスト」でもリストを操作するためのメソッドが、しっかりと準備されています。

これまで「リスト」を作成してきましたが、実はこの時、リスト内の要素に値が設定される以外にも、必要な処理(メソッド)が利用可能な状態になっています。

上のキャプチャの場合、リストの名前を利用して「list_num.append(x)」のようにメソッドを呼び出しリスト「list_num」を操作します。

リストはプログラム内に複数存在する(作成している)かもしれません(タプルやクラスなどのオブジェクトも同様)。この場合に「list_num」への処理なのか、別のオブジェクトへの処理なのかはきちんと明示する必要があります。

例えば「list_num1」「list_num2」「list_num3」の3つのリストが存在したとすると「list_num2」への処理であれば「「list_num2.メソッド」と記述します。明示しない場合は処理として正しく行われません。

appendメソッド

list.append(x)
リストの末尾に要素を一つ追加します。a[len(a):] = [x] と等価です。

https://docs.python.org/ja/3.11/tutorial/datastructures.html

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)
イテラブルのすべての要素を対象のリストに追加し、リストを拡張します。a[len(a):] = iterable と等価です。

https://docs.python.org/ja/3.11/tutorial/datastructures.html

extendメソッドを利用するとメソッドの引数に指定した「リスト」などのイテラブルオブジェクトの各要素をひとつづつ順番に取り出して追加してくれます

先ほどの「appendメソッド」ではリストを指定した場合に、追加先の最後の要素にはリストが追加されましたが、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))

実行結果

extendメソッドは「累算代入」(「+=」)と同じ動きをとります。

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)
指定した位置に要素を挿入します。第 1 引数は、リストのインデクスで、そのインデクスを持つ要素の直前に挿入が行われます。従って、 a.insert(0, x) はリストの先頭に挿入を行います。また a.insert(len(a), x) は a.append(x) と等価です。

https://docs.python.org/ja/3.11/tutorial/datastructures.html

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)
リスト中で x と等しい値を持つ最初の要素を削除します。該当する要素がなければ ValueError が送出されます。

https://docs.python.org/ja/3.11/tutorial/datastructures.html

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])
リスト中の指定された位置にある要素をリストから削除して、その要素を返しますインデクスが指定されなければ、 a.pop() はリストの末尾の要素を削除して返します。この場合も要素は削除されます。 (メソッドの用法 (signature) で i の両側にある角括弧は、この引数がオプションであることを表しているだけなので、角括弧を入力する必要はありません。この表記法は Python Library Reference の中で頻繁に見ることになるでしょう。)

https://docs.python.org/ja/3.11/tutorial/datastructures.html

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()
リスト中の全ての要素を削除します。del a[:] と等価です。

https://docs.python.org/ja/3.11/tutorial/datastructures.html

clearメソッドを利用すると全ての要素を削除できます。リファレンスにあるように「del文」と結果は同じとなります。「del文」については次回の記事で扱います。

list_num1 = [ 6, 3, 10, 8, 7, 5, 3, 9 ]

list_num1.clear()

print('list_num1:{}'.format(list_num1))

実行結果

今回は以上になります。次回は残りのメソッドについての記事となります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST