Verwenden Sie geschweifte Klammern zu initialisieren Set in Python
Lerne ich python, und ich habe eine Anfänger-Frage zum initialisieren setzt. Durch Tests habe ich herausgefunden, dass ein Satz kann initialisiert werden, etwa so:
my_set = {'foo', 'bar', 'baz'}
Gibt es irgendwelche Nachteile, es zu tun auf diese Weise, im Gegensatz zu den standard-Weg:
my_set = set(['foo', 'bar', 'baz'])
oder ist es nur eine Frage des Stils?
- Die Dokumentation gilt es zu erwähnen, einfach nicht gibt. Beachten Sie, dass die Dokumentation für ein veraltetes Modul, die real-sets sind jetzt vordefiniert. Es ist in der "What' s New in Python 2.7" Dokument", und das Referenzhandbuch kurz beschreibt: docs.python.org/2/reference/expressions.html#set-displays
- Ich verwende python 2.7, so dass ich nicht glaube, einen Blick in die python-3-docs. Der link, den ich gepostet ist bei 2.7, aber es seltsamerweise gar nicht erwähnt.
- Ich habe seit bearbeitete meinen Kommentar, der 2,7 docs auch dies erwähnen. Der link, den Sie gepostet wird, ist veraltet, ein Relikt aus der Vergangenheit, falsch, veraltet. Vergessen, dass es existiert und nutzen, wie Sie selbst sagt, dass Sie stattdessen verwenden: docs.python.org/2/library/stdtypes.html#set und docs.python.org/2/library/stdtypes.html#frozenset
- Danke für die Hilfe mich aus. Ich bearbeitet habe, die Frage also, dass ich nicht mehr sagen, es gibt keine Dokumentation dafür (obwohl es gibt einige Beispiele, in denen dieses online).
- Für Passanten: Pycharm warnt vor der Verwendung einer Funktion aufrufen, wenn man eine literal - es kann aus Gründen der performance werden - also lieber das set buchstäblich in neuem code
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei offensichtliche Probleme mit dem set-literal-syntax:
Ist es nicht verfügbar, bevor Sie Python 2.7
Es gibt keinen Weg, um express eine leere Gruppe verwenden, die syntax (mit
{}
erstellt ein leeres dict)Diejenigen, die möglicherweise oder möglicherweise nicht wichtig für Sie.
Den Abschnitt der Dokumente skizziert diese syntax ist hier.
Vergleichen auch den Unterschied zwischen
{}
undset()
mit einem einzigen Wort argument.aber beide
a
undb
sind Sätze, natürlich.set([])
anstatt nurset()
.set()
immer nehmen ein einzelnes argument. Eine einzelne durchsuchbar.Vom Python-3-Dokumentation (das gleiche gilt für python 2.7):
in python 2.7:
Sich bewusst sein, dass
{}
ist auch fürmap
/dict
:Kann man auch einen umfassenden syntax zum initialisieren setzt: