0
votes

Un ensemble d'un tuple dans Python3

expérimentalement, j'ai pu créer un comme celui-ci: xxx

mais la syntaxe semble un peu surchargée. Peut-on expliquer pourquoi il doit s'agir de cette façon de travailler (trois ensembles de parenthèses et une virgule)?


8 commentaires

Vous pouvez également utiliser défini ([(1, 2)]) , qui pourrait être visuellement plus facile à analyser


Peut aussi déposer SET () et utiliser {(1, 2)}


Vous auriez également pu utiliser {(1, 2)} qui est plus clair. Vous avez utilisé à la place le constructeur définir qui nécessite un iérêteur d'articles, et vous avez décidé d'utiliser un autre tuple comme que c'est ibler et que les tuples singleton ont toujours l'air bizarre (et ne faites pas beaucoup de sens). Ainsi, vous auriez pu utiliser une liste, Set ([(1,2)])


Pour créer un tuple d'un élément, vous êtes une virgule supplémentaire à la fin, s'il n'y a pas de virgule, cela pourrait être une expression mathématique. Plus d'infos wiki.python.org/moin/tuplesyntax


Vous pouvez utiliser s = {(1, 2)} qui est plus élégant


Merci! {(1, 2)} apparemment est le moyen d'aller. Il suffit de vous demander comment fonctionne exactement la construction de la question.


Est parce que le constructeur prend une ierérable (vous utilisez ainsi 3 ensembles de parenthèses). Vous pouvez également faire s = set () et s.add ((1, 2)) .


Vous pouvez également le créer comme ce s = {(((1,2),)}


3 Réponses :


0
votes

Le trailing , code> indique simplement Python que la valeur est une séquence, un tuple code> dans ce cas.

Les parenthèses sont normalement utilisées dans des expressions mathématiques. Et ils sont également utilisés pour définir les tuples. P> xxx pré>

S'il n'y a qu'un seul élément à l'intérieur d'une paire de parenthèses, il est considéré comme une expression et est évalué, renvoyant une valeur unique. . P>

Pour dire à Python explicitement que c'est un tuple code>, un , code> doit être ajouté à la fin. P>

>>> ((1, 2), (3, 4))
((1, 2), (3, 4))


0 commentaires

2
votes

Vous auriez pu utiliser définir ([(1, 2)]) pour obtenir la même chose.

Vous avez un jeu (non, pas de jeu de mots ...) de parenthèses pour l'appel de la fonction. SET () prend un argument ibler comme argument, la liste contenant votre seul tuple.

Si vous souhaitez utiliser un tuple au lieu d'une liste, il devient un peu plus difficile de lire. L'équivalent tuple de la liste [item] est le tuple (élément,) - la virgule en fait un tuple, pas les parenthèses.

donc, remplacer mon [(1, 2)] avec ((1, 2),) , vous obtenez votre Set ((((1, 2),)))

et, bien sûr, comme indiqué dans les commentaires, {(1, 2)} serait le moyen le plus simple de l'écrire ...


0 commentaires

0
votes

Pour être clair, vous souhaitez valider que le tuple (1, 2) code> est dans s code>? Profitant de la flexibilité de Python pour la lisibilité pourrait vous aider à comprendre pourquoi le nombre de parenthèses est nécessaire.

set( # first paren is for calling the function set
    ( # second paren creates the object of items set should look at
        (1,2), # is an item in the set 
    )
    )

# output same as
set(((1,2), (1,2), (1,2)))

# output same as
t = ((1,2), (1,2), (1,2))
set(t)

# output same as
t = (1,2)
t = (t, t, t)
set(t)

# output same as
t = (1, 2)
set([t]*5)


0 commentaires