129 votes

Utiliser les accolades pour initialiser un ensemble en Python

J'apprends Python et j'ai une question de débutant sur l'initialisation des ensembles. En faisant des tests, j'ai découvert qu'un ensemble peut être initialisé de la manière suivante :

my_set = {'foo', 'bar', 'baz'}

Y a-t-il des inconvénients à procéder de cette manière, par opposition à la méthode standard ?

my_set = set(['foo', 'bar', 'baz'])

ou est-ce juste une question de style ?

124voto

bgporter Points 11119

Il y a deux problèmes évidents avec la syntaxe du littéral fixé :

my_set = {'foo', 'bar', 'baz'}
  1. Il n'est pas disponible avant Python 2.7.

  2. Il n'y a aucun moyen d'exprimer un ensemble vide en utilisant cette syntaxe (en utilisant {} crée un dict vide)

Ces éléments peuvent être importants ou non pour vous.

La section de la documentation décrivant cette syntaxe est la suivante aquí .

56voto

Thruston Points 148

Comparez également la différence entre {} y set() avec un seul mot comme argument.

>>> a = set('aardvark')
>>> a
{'d', 'v', 'a', 'r', 'k'} 
>>> b = {'aardvark'}
>>> b
{'aardvark'}

mais les deux a y b sont des ensembles bien sûr.

33voto

0x90 Points 8193

De Documentation Python 3 ( il en va de même pour python 2.7 ) :

Les accolades ou la fonction set() peuvent être utilisées pour créer des ensembles. Remarque : pour créer un ensemble vide, vous devez utiliser la fonction set(), et non {} ; cette dernière crée un dictionnaire vide, une structure de données dont nous parlerons dans la section suivante. prochaine section.

dans python 2.7 :

>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'}
>>> my_set
set(['bar', 'foo', 'baz'])

Sachez que {} est également utilisé pour map / dict :

>>> m = {'a':2,3:'d'}
>>> m[3]
'd'
>>> m={}
>>> type(m)
<type 'dict'> 

On peut également utiliser une syntaxe complète pour initialiser des ensembles :

>>> a = {x for x in """didn't know about {} and sets """ if x not in 'set' }
>>> a
set(['a', ' ', 'b', 'd', "'", 'i', 'k', 'o', 'n', 'u', 'w', '{', '}'])

9voto

Arjjun Points 1

Vous devez faire empty_set = set() pour initialiser un ensemble vide. {} est un vide dict .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X