J'apprends le python et j'ai une question de novice sur l'initialisation des ensembles. Lors de tests, j'ai découvert qu'un ensemble peut être initialisé comme suit:
my_set = {'foo', 'bar', 'baz'}
Y a-t-il des inconvénients à le faire de cette façon, par opposition à la méthode standard de:
my_set = set(['foo', 'bar', 'baz'])
ou est-ce juste une question de style?
La syntaxe d'ensemble littéral pose deux problèmes évidents:
my_set = {'foo', 'bar', 'baz'}
Il n'était pas disponible avant Python 2.7
Il n’ya aucun moyen d’exprimer un ensemble vide en utilisant cette syntaxe (en utilisant {}
crée un dict vide
Ceux-ci peuvent ou peuvent ne pas être importants pour vous.
La section de la documentation décrivant cette syntaxe est ici .
Comparez également la différence entre {}
Et set()
avec un seul argument Word.
>>> a = set('aardvark')
>>> a
{'d', 'v', 'a', 'r', 'k'}
>>> b = {'aardvark'}
>>> b
{'aardvark'}
mais a
et b
sont bien sûr des ensembles.
Depuis documentation Python (), il en va de même pour python 2.7 ):
Des accolades ou la fonction set () peuvent être utilisés pour créer des ensembles. Remarque: pour créer un ensemble vide, vous devez utiliser set (), pas {}; ce dernier crée un dictionnaire vide, une structure de données dont nous parlerons dans la section suivante.
dans python 2.7:
>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'}
>>> my_set
set(['bar', 'foo', 'baz'])
Soit conscient 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', '{', '}'])