TypeError: ‘builtin_function_or_method’ object is not subscriptable

Python
本ページはプロモーションが含まれています

はじめに

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を使ったりすると混乱することもあると思います。

慣れるまでは気づきにくい(&忘れがち)なエラーだと思います。
リスト操作ではエラーが良く出るのでこういったエラーもあると覚えておきたいですね。

この記事がお役に立ったのならば嬉しいです。
最後までお読みいただきありがとうございました。

タイトルとURLをコピーしました