Pourquoi cette instruction produit-elle une erreur même si une chaîne est en fait une liste de constantes de caractères?
string_name=""
string_name.append("hello Word")
La raison pour laquelle je considère cela comme vrai est parce que lorsque nous utilisons pour la boucle, nous sommes autorisés à utiliser cette déclaration-
pour i dans string_name:
......
Je pense que string_name est considéré comme une liste ici
C'est ce qu'ils vous enseignent dans la classe des algorithmes et des structures de données, qui traitent des langages algorithmiques (irréels) plutôt que des vrais langages de programmation, en Python, une chaîne est une chaîne, et une liste est une liste, ce sont des objets différents, vous pouvez "ajouter" à une chaîne en utilisant ce qu'on appelle la concaténation de chaînes (qui est essentiellement une opération d'addition sur des chaînes):
string_name = "hello"
string_name = string_name + " world"
print(string_name) # => "hello world"
Ou une concaténation sténographique:
string_name = "hello"
string_name += " world"
print(string_name) # => "hello world"
Les listes et les chaînes appartiennent à ce type appelé iterable
. iterable
s sont comme leur nom l'indique, itérables, ce qui signifie que vous pouvez les parcourir avec la clé Word in
, mais cela ne signifie pas qu'ils sont du même type d'objets:
for i in '123': # valid, using string
for i in [1, 2, 3]: # valid, using list
for i in (1, 2, 3): # valid, using Tuple
for i in 1, 2, 3: # valid, using an implicit-Tuple
# all valid, all different types
Je vous recommande fortement de lire le Documentation Python et/ou de prendre le Tutoriel de Python .
Dans le glossaire Docs:
itérable
Un objet capable de renvoyer ses membres un par un. Les exemples d'itérations incluent tous les types de séquence (tels que list, str et Tuple) et certains types non-séquence comme dict, objets fichier et objets de toutes les classes que vous définissez avec une méthode __iter __ () ou __getitem __ (). Les itérables peuvent être utilisés dans une boucle for et dans de nombreux autres endroits où une séquence est nécessaire (Zip (), map (),…). Lorsqu'un objet itérable est passé en tant qu'argument à la fonction intégrée iter (), il renvoie un itérateur pour l'objet. Cet itérateur est bon pour un passage sur l'ensemble des valeurs. Lorsque vous utilisez des itérables, il n'est généralement pas nécessaire d'appeler iter () ou de gérer vous-même les objets d'itérateur. L'instruction for le fait automatiquement pour vous, créant une variable temporaire sans nom pour contenir l'itérateur pendant la durée de la boucle. Voir aussi itérateur, séquence et générateur. En savoir plus sur itérables .