Maison  >  Article  >  développement back-end  >  Pourquoi .join() insère-t-il des caractères entre les éléments au lieu d'ajouter une chaîne en Python ?

Pourquoi .join() insère-t-il des caractères entre les éléments au lieu d'ajouter une chaîne en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 20:01:03500parcourir

Why Does .join() Insert Characters Between Elements Instead of Appending a String in Python?

Comprendre la méthode Join() pour la concaténation de chaînes

En travaillant avec Python, vous rencontrerez peut-être l'idée que .join() est la méthode préférée pour concaténer des chaînes. Cependant, sa fonctionnalité peut être déroutante pour les débutants.

Considérez cet extrait de code :

strid = repr(595)
print(array.array('c', random.sample(string.ascii_letters, 20 - len(strid))).tostring().join(strid))

Ce code ne se comporte pas comme prévu. Au lieu d'ajouter "595" au résultat, il produit une sortie de caractères de l'alphabet ASCII entrecoupés des chiffres de "595".

La méthode .join()

Pour comprendre pourquoi, démontons la méthode .join(). Il prend une chaîne comme argument et l'insère entre les éléments d'une liste donnée. Par exemple :

","join(["a", "b", "c"])

Produira "a,b,c". Le "," est inséré entre chaque élément de la liste.

Dans votre code, "595" est traité comme une liste de trois caractères individuels : ["5", "9", "5"]. Par conséquent, l'argument chaîne de la méthode .join() est inséré entre ces caractères, ce qui donne le résultat observé.

Méthode alternative :

Si votre intention est de concaténer la chaîne "595" à la chaîne générée, vous devez plutôt utiliser l'opérateur :

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

Cela concatènera correctement les deux chaînes, produisant une seule chaîne avec le contenu souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn