215 votes

Expliquer Python .join()

Je suis assez nouveau pour Python et suis complètement confus par .join() que j’ai lu est la méthode préférée pour la concaténation de chaînes.

J'essaie :

et obtenir quelque chose comme :

Pourquoi ça marche comme ça ? Ne devrait pas le '595' juste être ajouté automatiquement ?

309voto

Greg Hewgill Points 356191

Regardez attentivement votre sortie:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^

J'ai mis en évidence les "5", "9", "5" de votre chaîne d'origine. Le Python join() méthode est une méthode de chaîne, et prend une liste de choses à se joindre à la chaîne. Un exemple simple pourrait aider à expliquer:

>>> ",".join(["a", "b", "c"])
'a,b,c'

L' "," est inséré entre chaque élément de la liste donnée. Dans votre cas, votre "liste" est la représentation de chaîne "595", qui est considérée comme la liste ["5", "9", "5"].

Il semble que vous êtes à la recherche pour + à la place:

print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid

94voto

Ned Batchelder Points 128913

``prend une chose itérable comme un argument. Généralement il s’agit d’une liste. Le problème dans votre cas, c’est qu’une chaîne est lui-même itérable, donnant à chaque personnage à son tour. Votre code se décompose pour cela :

qui agit de la même chose que ceci :

et donc produit votre chaîne :

Chaînes comme Iterable est une des questions plus déroutantes de début avec Python.

61voto

Dan Points 1417

Pour concaténer une chaîne, juste concaténer avec le `` sign.

Par exemple

lie les chaînes avec un séparateur. Le séparateur est ce que vous placer juste avant la . Par exemple

Join prend une liste de chaînes comme paramètre.

7voto

Pēteris Caune Points 13662

Join() est pour la concaténation de tous les éléments de liste. Pour concaténer deux chaînes « + » serait plus judicieux :

4voto

Jorenko Points 1174

Pour développer un peu plus sur ce que disent les autres, si vous voulez utiliser join pour concaténer simplement vos deux chaînes, procédez comme suit :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X