web-dev-qa-db-ja.com

リストを変数に割り当てると、Pycharmから「このリスト作成はリストリテラルとして書き換えられる可能性があります」というプロンプトが表示されるのはなぜですか?

私はPython初心者でパズルを持っています。このようなコードを書くとき:

lst = [1, 2, 3, 4]

Pycharmは「このリスト作成はリストリテラルとして書き換えられる」というプロンプトを表示します。しかし、それが

lst = list([1, 2, 3, 4])

Pycharmは何も言わない。誰がその理由を教えてくれますか?

このコードはlst = [1, 2, 3, 4] Pythonで合法ですか?プロンプトを無視できますか?

42
russell

コードをチェックして、lstが_lst=[]_以外の場所にないことを確認してください。

次を入力した場合:

_lst= []
# more code
lst = [1, 2, 3, 4]
_

受け取ったプロンプトが表示されます。そのままにしておけば問題は発生しませんが、悪い習慣です。

これらの2つのケースでは、関数を使用して変数を変更しています:list()およびappend()。前の例では、変数を明示的に再定義しているだけです。

別の不適切な例:

_a = 7
# some code that has nothing to do with "a" or uses it
a = 8
_

最初に_a = 8_を設定するだけです。 _a = 7_を保存する必要はありません。

25
Leb

Pythonでそのようなコードを記述することは完全に合法です。ただし、次のようなコードを書く

lst = [1, 2, 3, 4, 12]

「より良い」だろう

lst = [1, 2, 3, 4]
... # code has nothing do to with lst
lst.append(12)

一般的に、前者の方が後者よりも優れたパフォーマンスを発揮しますが、後者の方が読みやすい場合/それを行う正当な理由がある場合は、PyCharmプロンプトを無視できます。

気になる場合は、この検査をオフにすることができます

「PyCharm-> settings-> editor-> inspection-> Python->リスト作成は...」

33
Shawn