Heim > Artikel > Backend-Entwicklung > Warum führt „.join()“ zu unerwarteten Ergebnissen, wenn ein String und ein Byte-ähnliches Objekt verkettet werden?
Was ist .join() und wie funktioniert es beim Verketten von Strings?
Pythons .join()-Methode wird häufig für Strings verwendet Verkettung. Beim Testen des bereitgestellten Beispiels wurden jedoch unerwartete Ergebnisse erzielt. Wenn Sie den Zweck und die Verwendung dieser Methode verstehen, können Sie klären, warum sie sich so verhalten hat.
Die .join()-Methode arbeitet mit einer Zeichenfolge und verwendet eine Iteration von Elementen als Argument. Es fügt die angegebene Zeichenfolge zwischen jedem Element des Iterables während der Verkettung ein.
Zum Beispiel:
",".join(["a", "b", "c"]) # Output: 'a,b,c'
Im bereitgestellten Beispiel:
array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring().join(strid)
The tostring() Die Methode wandelt das Zeichenarray in ein byteähnliches Objekt um. Dieses byteartige Objekt wird dann zusammen mit der Zeichenfolge „595“ als Eingabe für .join() verwendet.
Der entscheidende Punkt zum Verständnis ist jedoch, dass die Zeichenfolge „595“ als Liste von behandelt wird seine einzelnen Zeichen, also [„5“, „9“, „5“]. Daher bearbeitet „.join()“ diese Liste und fügt das byteähnliche Objekt zwischen jedem Zeichen ein:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5 ^ ^ ^
Jede „5“, „9“, „5“ in der Ausgabe gibt die Einfügung an des byteähnlichen Objekts zwischen den Zeichen der Originalzeichenfolge.
Um die beabsichtigte Verkettung zu erreichen, kann stattdessen der Operator verwendet werden:
array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring() + strid
Dieser Ansatz verkettet die byteähnlichen Objekte direkt Objekt mit der Zeichenfolge „595“, wodurch die gewünschte Ausgabe ohne Einfügungen zwischen Zeichen erzeugt wird.
Das obige ist der detaillierte Inhalt vonWarum führt „.join()“ zu unerwarteten Ergebnissen, wenn ein String und ein Byte-ähnliches Objekt verkettet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!