Maison >développement back-end >Tutoriel Python >Pourquoi `.join()` produit-il des résultats inattendus lors de la concaténation d'une chaîne et d'un objet de type octets ?
Qu'est-ce que .join() et comment fonctionne-t-il dans la concaténation de chaînes ?
La méthode .join() de Python est couramment utilisée pour les chaînes enchaînement. Cependant, en testant l’exemple fourni, il a donné des résultats inattendus. Comprendre le but et l'utilisation de cette méthode peut clarifier pourquoi elle s'est comportée comme elle l'a fait.
La méthode .join() opère sur une chaîne et prend un itérable d'éléments comme argument. Il insère la chaîne spécifiée entre chaque élément de l'itérable lors de la concaténation.
Par exemple :
",".join(["a", "b", "c"]) # Output: 'a,b,c'
Dans l'exemple fourni :
array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring().join(strid)
Le tostring() La méthode convertit le tableau de caractères en un objet de type octets. Cet objet de type octets est ensuite utilisé comme entrée pour .join() avec la chaîne "595".
Cependant, le point clé à comprendre est que la chaîne "595" est traitée comme une liste de ses caractères individuels, c'est-à-dire ["5", "9", "5"]. Par conséquent, ".join()" opère sur cette liste, en insérant l'objet de type octet entre chaque caractère :
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5 ^ ^ ^
Chaque "5", "9", "5" dans la sortie indique l'insertion de l'objet de type octet entre les caractères de la chaîne d'origine.
Pour obtenir la concaténation souhaitée, l'opérateur peut être utilisé à la place :
array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring() + strid
Cette approche concatène directement l'objet de type octet objet avec la chaîne "595", produisant le résultat souhaité sans aucune insertion entre les caractères.
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!