Heim >Backend-Entwicklung >Python-Tutorial >Warum führt „.join()' zu unerwarteten Ergebnissen, wenn ein String und ein Byte-ähnliches Objekt verkettet werden?

Warum führt „.join()' zu unerwarteten Ergebnissen, wenn ein String und ein Byte-ähnliches Objekt verkettet werden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-12 13:26:02434Durchsuche

Why Does `.join()` Produce Unexpected Results When Concatenating a String and a Bytes-like Object?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn