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

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

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

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

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