python - sirven - Usar llaves para inicializar el conjunto
para que sirven los conjuntos en python (3)
Estoy aprendiendo Python, y tengo una pregunta de principiante sobre la inicialización de conjuntos. A través de las pruebas, descubrí que un conjunto se puede inicializar así:
my_set = {''foo'', ''bar'', ''baz''}
¿Hay alguna desventaja de hacerlo de esta manera, a diferencia de la forma estándar de:
my_set = set([''foo'', ''bar'', ''baz''])
o es solo una cuestion de estilo?
Compare también la diferencia entre {}
y set()
con un solo argumento de 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 vale para python 2.7 ):
Las llaves o la función set () se pueden usar para crear conjuntos. Nota: para crear un conjunto vacío, debe usar set (), no {}; este último crea un diccionario vacío, una estructura de datos que discutiremos 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)
<type ''dict''>
Uno puede usar conjuntos de comprensión:
>>> 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'', ''{'', ''}''])
Hay dos problemas obvios con la sintaxis literal del conjunto:
my_set = {''foo'', ''bar'', ''baz''}
No está disponible antes de Python 2.7
No hay forma de expresar un conjunto vacío usando esa sintaxis (usar
{}
crea un dict vacío)
Esos pueden o no ser importantes para usted.
La sección de los documentos que delinean esta sintaxis está docs.python.org/2/reference/expressions.html#set-displays .