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!