Maison >développement back-end >Tutoriel Python >Pourquoi Python traite-t-il `('a')` comme une chaîne, pas un tuple ?

Pourquoi Python traite-t-il `('a')` comme une chaîne, pas un tuple ?

DDD
DDDoriginal
2024-12-17 11:33:24401parcourir

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

L'énigme des tuples singleton et leur conversion filandreuse

Lors de la création d'un tuple avec un seul élément, vous pouvez vous attendre à ce qu'il conserve son tuple nature. Cependant, en Python, un comportement particulier se produit.

Le problème :

Considérez le code suivant :

a = [('a'), ('b'), ('c', 'd')]

Étonnamment, lorsque vous imprimez le type de chaque élément dans a, vous obtenez le résultat suivant :

['a', 'b', ('c', 'd')]
<type 'str'>
<type 'str'>
<type 'tuple'>

Pourquoi les deux premiers éléments, bien qu'ils soient inclus entre parenthèses, se comporter comme des chaînes au lieu de tuples ?

La réponse :

La clé réside dans la compréhension de la syntaxe Python pour les tuples. Les parenthèses seules ne créent pas un tuple avec un seul élément. Pour ce faire, vous devez ajouter une virgule après l'élément. Cette distinction est illustrée ci-dessous :

type(('a'))  # A string
type(('a',))  # A tuple

Pour corriger l'exemple de code, ajoutez des virgules après les chaînes à un seul élément :

a = [('a',), ('b',), ('c', 'd')]

La raison :

Selon la documentation Python, les tuples vides et les tuples avec un seul élément ont des exigences de syntaxe uniques. Les tuples vides sont créés avec une paire de parenthèses vides, tandis que les tuples avec un seul élément nécessitent une valeur suivie d'une virgule.

Un contournement :

Si vous trouvez le virgule finale pour être esthétiquement désagréable, vous pouvez créer un tuple avec un seul élément en passant une liste au tuple() fonction :

x = tuple(['a'])

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