Heim > Backend-Entwicklung > Python-Tutorial > Warum behandelt Python „('a')' als String und nicht als Tupel?

Warum behandelt Python „('a')' als String und nicht als Tupel?

DDD
Freigeben: 2024-12-17 11:33:24
Original
401 Leute haben es durchsucht

Why Does Python Treat `('a')` as a String, Not a Tuple?

Das Rätsel der Singleton-Tupel und ihre stringartige Konvertierung

Wenn Sie ein Tupel mit einem einzelnen Element erstellen, können Sie erwarten, dass es sein Tupel behält Natur. In Python tritt jedoch ein eigenartiges Verhalten auf.

Das Problem:

Bedenken Sie den folgenden Code:

a = [('a'), ('b'), ('c', 'd')]
Nach dem Login kopieren

Überraschenderweise beim Drucken Wenn Sie den Typ jedes Elements in a angeben, erhalten Sie die folgende Ausgabe:

['a', 'b', ('c', 'd')]
<type 'str'>
<type 'str'>
<type 'tuple'>
Nach dem Login kopieren

Warum tun die ersten beiden Elemente trotz Wenn sie in Klammern eingeschlossen sind, verhalten sie sich wie Zeichenfolgen statt wie Tupel?

Die Antwort:

Der Schlüssel liegt im Verständnis der Python-Syntax für Tupel. Klammern allein erzeugen kein Tupel mit einem einzelnen Element. Dazu müssen Sie nach dem Element ein Komma einfügen. Diese Unterscheidung wird unten veranschaulicht:

type(('a'))  # A string
type(('a',))  # A tuple
Nach dem Login kopieren

Um das Codebeispiel zu korrigieren, fügen Sie nach den Einzelelementzeichenfolgen Kommas ein:

a = [('a',), ('b',), ('c', 'd')]
Nach dem Login kopieren

Der Grund:

Laut der Python-Dokumentation haben leere Tupel und Tupel mit einem einzelnen Element einzigartige Syntaxanforderungen. Leere Tupel werden mit einem leeren Klammerpaar erstellt, während Tupel mit einem einzelnen Element einen Wert gefolgt von einem Komma erfordern.

Eine Umgehung:

Wenn Sie das finden Wenn das nachgestellte Komma ästhetisch unansprechend ist, können Sie ein Tupel mit einem einzelnen Element erstellen, indem Sie eine Liste an tuple() übergeben. Funktion:

x = tuple(['a'])
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum behandelt Python „('a')' als String und nicht als Tupel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage