Estoy aprendiendo python, y tengo una pregunta de principiante sobre la inicialización de conjuntos. A través de las pruebas, he descubierto que un conjunto se puede inicializar así:
my_set = {'foo', 'bar', 'baz'}
¿Hay alguna desventaja de hacerlo de esta manera, en oposición a la forma estándar de:
my_set = set(['foo', 'bar', 'baz'])
¿O es solo una cuestión de estilo?
Hay dos problemas obvios con la syntax literal del conjunto:
my_set = {'foo', 'bar', 'baz'}
No está disponible antes de Python 2.7
No hay forma de express un conjunto vacío usando esa syntax (usar {}
crea un dict vacío)
Esos pueden o no ser importantes para ti.
La sección de los documentos que describe esta syntax está aquí .
Compara también la diferencia entre {}
y set()
con un argumento de una sola palabra.
>>> a = set('aardvark') >>> a {'d', 'v', 'a', 'r', 'k'} >>> b = {'aardvark'} >>> b {'aardvark'}
pero tanto a
como b
son conjuntos, por supuesto.
De la documentación de Python 3 ( lo mismo se aplica a python 2.7 ):
Se pueden utilizar llaves o la función set () para crear conjuntos. Nota: para crear un conjunto vacío debe usar set (), no {}; el último crea un diccionario vacío, una estructura de datos que discutimos en la siguiente sección.
en python 2.7:
>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'} >>> my_set set(['bar', 'foo', 'baz'])
Tenga en cuenta que {}
también se usa para map
/ dict
:
>>> m = {'a':2,3:'d'} >>> m[3] 'd' >>> m={} >>> type(m)
También se puede utilizar la syntax completa para inicializar conjuntos:
>>> 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', '{', '}'])