[エラー解決]TypeError: 'list' object is not callable[Python初心者向け]
エラーの経緯
pythonでlist関数を使ってリストを作ろうとしましたが、タイトルのようなエラーがでました。
原因
このエラーは「list関数を変数として定義している」場合に起きることがあるエラーです。
詳しい原因は下記のサイトにも出ています。ぜひご覧ください。
疑問
しかし、簡単に書けばただ下記のようなコードでlistを作りたかっただけなのです。
num=[10.1,3.0,5.0,7.0]
#numの値をround関数で丸めて、map関数を用いてリストを作成する
list(map(round,num))
特に「list」を変数で定義していないな~と思っていましたが、これより前のコードを眺めていたところ、こんな箇所があったんですね…
#これが原因…
list=[3.5,4.0,5.0]
対処法
ミスに気づけば対処はしやすいです。まずは下記コードを用いて、変数として一度定義したlistを削除します。
del list
そのあとでlistとして定義した変数名を違うものにしておきましょう。
再発防止
・listといった組み込み関数に使う言葉は変数に使わないこと。
・リスト内包表記を使う
[round(n) for n in num]
余談
pythonには「予約語」は変数として定義できないようになっています。
例えば
del=[1,2,3,4,5]
のような定義はできません。SyntaxError: invalid syntaxとなります。しかし、
予約語以外のlistやstrなどの組み込み関数は変数にできてしまうのですが、これらを変数に使うと混乱の元。複数人でプログラムを書いていると間違いなく嫌な顔をされますよ~。
というわけでさらに詳しい情報は下記のサイトにもございますので同じような失敗をしないよう、私も心に留めおきたいと思います。