web-dev-qa-db-fra.com

Lorsque j'attribue une liste à une variable, pourquoi Pycharm me donne-t-il une invite "Cette création de liste pourrait être réécrite sous forme de liste littérale"?

Je suis un débutant Python) et j'ai un casse-tête. Quand j'écris du code comme celui-ci:

lst = [1, 2, 3, 4]

Pycharm m'a donné l'invite suivante: "cette création de liste pourrait être réécrite sous forme de liste littérale". Mais si c'est remplacé par

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

Pycharm ne dit rien. Qui pourrait me dire pourquoi?

Est-ce que ce code ressemble à lst = [1, 2, 3, 4] légal en Python? Puis-je ignorer l'invite?

42
russell

Vérifiez votre code pour vous assurer que vous n'avez pas lst autre part comme lst=[].

Si vous tapez ce qui suit:

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

Vous recevrez l'invite que vous avez. Vous ne rencontrerez pas de problèmes si vous continuez ainsi, mais c'est une mauvaise pratique.

Dans ces deux cas, vous utilisez une fonction pour modifier la variable: list() et append(). Dans la précédente, vous redéfinissez explicitement la variable.

Un autre exemple impropre:

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

Il suffit de définir a = 8 Pour commencer. Pas besoin de stocker a = 7.

25
Leb

C'est totalement légal d'écrire un code comme ça en Python. Cependant, écrire du code comme

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

serait "mieux" que

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

En général, le premier aurait de meilleures performances que le dernier, mais si le dernier est plus lisible dans votre cas/vous avez une bonne raison de le faire, vous pouvez alors ignorer l’invite de PyCharm.

Si cela vous dérange, vous pouvez désactiver cette inspection dans

"PyCharm-> Paramètres-> éditeur-> inspection-> Python-> La création de liste pourrait être ..."

33
Shawn