-1
votes

Strings dans Python mutable, sinon expliquer cela?

J'ai déclaré une chaîne "Y comme bonjour que tenter de changer de caractère" H "par" M "à l'aide de la méthode de remplacement dans Python et j'ai vérifié le type (Y): sa chaîne Mais quand j'ai googlé, ses chaînes montrant sont immuables ... veuillez expliquer xxx


5 commentaires

Vous n'avez pas muté de chaîne. Vous avez réaffecté une variable avec une chaîne entièrement nouvelle.


Essayez x = y = 'hello' et imprimer x après et vous verrez qu'il a toujours la valeur bonjour . Si vous faites de même avec une liste (valeur mutable), vous verrez une modification reflétée dans x , par exemple. x = y = [0, 1, 2]; y [0] = 5; x -> [5, 1, 2]


@Achampion avec un CAVEAT IMPORTANT sur les emplacements de mémoire réutilisés


@ROGANJOSH J'ai décidé d'éviter cela avec une approche différente de celle de ID ()


@Achampion ouais, je viens de réaliser votre édition après avoir tapé si mon commentaire n'est pas pertinent pour votre nouveau commentaire, mais je pense que cela vaut probablement la peine de garder le lien


3 Réponses :


1
votes

Vous n'avez pas muté la chaîne, vous avez changé quelle chaîne y pointée vers.

y initialement signalé sur "bonjour" , alors vous avez exécuté la ligne y = y.replace ("h", "m") et causé y sur le point sur la chaîne "mello" . La chaîne d'origine "bonjour" n'a jamais été muté, car les cordes sont vraiment immuables.


0 commentaires

0
votes

Oui, les chaînes sont immuables. Quand vous exécutez la ligne y = y.replace ("h", "m") Vous créez une nouvelle chaîne, sans changer le premier. La première chaîne ne peut pas être modifiée.


0 commentaires

-2
votes

String en Python est immuable (ne peut pas changer pour permettre l'optimisation de l'utilisation d'un dictionnaire pour toutes les chaînes).

Par exemple: P>

>>> y = 'a new value'
>>> y
a new value


4 commentaires

Les chaînes sont pas mutable. Je ne sais pas ce que vous essayez de dire ici. Vous n'avez pas muté de chaîne en termes de mutable / immuable, vous créez toujours une nouvelle chaîne.


Nulle part dans cette réponse, avez-vous muté une chaîne. S'il vous plaît soyez prudent lorsque vous publiez des choses comme ceci. Nous n'avons pas besoin de confondre plus que ce n'est déjà.


Attendez, est le premier paragraphe censé dire "String [S] en Python sont immuable "? Vous semblez dire qu'ils sont immuables dans le reste de la réponse, mais vous contradurez le premier paragraphe.


Oui - désolé, corrigé maintenant