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
3 Réponses :
Vous n'avez pas muté la chaîne, vous avez changé quelle chaîne y code> pointée vers. p>
y code> initialement signalé sur "bonjour" code>, alors vous avez exécuté la ligne y = y.replace ("h", "m") code > et causé y code> sur le point sur la chaîne "mello" code>. La chaîne d'origine "bonjour" code> n'a jamais été muté, car les cordes sont vraiment immuables. P>
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. p>
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
Les chaînes sont pas i> 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 b>"? 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
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' code> et imprimerx code> après et vous verrez qu'il a toujours la valeurbonjour code>. Si vous faites de même avec une liste code> code> (valeur mutable), vous verrez une modification reflétée dansx code>, par exemple.x = y = [0, 1, 2]; y [0] = 5; x code> ->[5, 1, 2] code>@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 () code>@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