Python de Concaténation de Chaîne - la concaténation de '\n'
Je suis nouveau sur le Python et besoin d'aide pour essayer de comprendre les deux problèmes que je reçois concernant la concaténation de chaînes. Je suis conscient que les chaînes de caractères peuvent être ajoutés à concaténer les uns des autres à l'aide de + symbole comme si.
>>> 'a' + 'b'
'ab'
Cependant, j'ai découvert tout récemment, vous n'avez même pas besoin d'utiliser le symbole + pour concaténer des chaînes de caractères (par accident/violon), ce qui conduit à mon premier problème à comprendre Comment/pourquoi est-ce possible!?
>>> print 'a' + 'b'
ab
En outre, je comprends aussi que le '\n' chaîne produit un saut de ligne'. Mais lorsqu'il est utilisé en conjonction avec mon premier problème. J'ai le.
>>> print '\n' 'a'*7
a
a
a
a
a
a
a
Donc mon second problème se pose: "Pourquoi dois-je obtenir 7 nouvelles lignes de la lettre 'a'. En d'autres termes, ne faut-il pas le relais symbole, *, répéter la lettre 'a' 7 fois!? Comme suit.
>>> print 'a'*7
aaaaaaa
S'il vous plaît aidez-moi de clarifier ce qui se passe.
print '\n' 'a'*7
produire '\na' * 7
, pas a a a a a a a
C'est juste une erreur de mise en forme à son poste.
OriginalL'auteur Abraham | 2011-07-23
Vous devez vous connecter pour publier un commentaire.
Quand
"a" "b"
est transformé en"ab"
, cette ins pas la même que la concaténation des chaînes de caractères avec+
. Lorsque le code source Python est en cours de lecture, les cordes adjacentes sont automatiquement joint pour plus de commodité.Ce n'est pas un fonctionnement normal, c'est pourquoi il ne suit pas l'ordre des opérations que vous attendez pour
+
et*
.est effectivement interprété le même que
et non pas comme
OriginalL'auteur Jeremy Banks
Python concatène les chaînes ensemble, lorsque vous n'avez pas les séparer par une virgule:
De sorte que vous avez réellement l'impression
'\na'
7 fois.OriginalL'auteur zeekay
Je ne suis pas sûr de ce que tu veux dire par "comment est-il possible". Vous écrivez une règle: deux chaînes uns à côté des autres concaténées. Ensuite vous mettre en œuvre dans l'analyseur. Pourquoi? Parce qu'il permet de réaliser facilement de faire des choses comme ceci:
De cette façon, vous pouvez décrire ce que vous faites.
Lorsque vous faites A * B + C, l'ordinateur fait toujours Un temps de B d'abord, puis ajoute de la C, parce que la multiplication vient avant l'addition.
Lorsque vous faites de concaténation de chaîne en mettant les littéraux de chaîne uns à côté des autres, et la multiplication, la concaténation de chaîne vient en premier. Cela signifie
'\n' 'a' * 7
est le même que('\n' 'a') * 7
, de sorte que la chaîne que vous êtes en répétant est'\na'
.OriginalL'auteur agf
Vous avez probablement déjà rendu compte que le fait de compter sur l'implicite de concaténation de chaînes adjacentes est parfois problématique. Aussi, la concaténation avec le
+
opérateur n'est pas efficace. Il n'est pas visible si rejoindre seul un petit nombre de chaînes, mais il est très sensible à l'échelle.Être explicite à ce sujet; l'utilisation
''.join()
Er oui, il y a des optimisations qui peuvent être faites selon le contexte. OP de ne pas mentionner les boucles.
OriginalL'auteur Rob Cowie