はじめに
pythonでプログラムでリストでremoveを使い要素を削除しようとした時にエラーが発生しました。
今回はremoveでしたが、remove以外でも同じ様にリストを操作してしまうと同様にエラーが表示されると思います。
という事で、今回のエラーの原因と対象方法のメモになります。
エラー
エラー再現用の簡単なソースコードです。
removeを実行している行でエラーが発生しています。
l = ["a", "b", "c", "d", "e", "d"]
print(l)
# removeで3番目の要素を削除する
l.remove["d"]
print(l)
これを実行すると
['a', 'b', 'c', 'd', 'e', 'd']
Traceback (most recent call last):
File "/Users/****/Desktop/python/remove_list.py", line 5, in <module>
l.remove["d"]
TypeError: 'builtin_function_or_method' object is not subscriptable
エラーメッセージ「TypeError: ‘builtin_function_or_method’ object is not subscriptable」を訳すと、
型のエラー:’builtin_function_or_method’オブジェクトは添字が出来ない
となります。
原因&対処
ちょっとエラーメッセージだけでは分かりにくいですが、原因はremoveの箇所で、括弧の『[]』を使っているからです。
removeはメソッド(関数)なので丸括弧『()』を使う必要があります。
次は修正したソースコードです。
l = ["a", "b", "c", "d", "e", "d"]
print(l)
# removeで3番目の要素を削除する
l.remove("d")
print(l)
これを実行すると
['a', 'b', 'c', 'd', 'e', 'd']
['a', 'b', 'c', 'e', 'd']
と問題なく表示されます。
さいごに
今回はリストへの操作方法での括弧[]と丸括弧()の間違いでした。
別のプログラムを使った後で、pythonを使ったりすると混乱することもあると思います。
慣れるまでは気づきにくい(&忘れがち)なエラーだと思います。
リスト操作ではエラーが良く出るのでこういったエラーもあると覚えておきたいですね。
この記事がお役に立ったのならば嬉しいです。
最後までお読みいただきありがとうございました。