Я изучаю python, и у меня есть вопрос для новичков об инициализации наборов. В ходе тестирования я обнаружил, что набор можно инициализировать следующим образом:
my_set = {'foo', 'bar', 'baz'}
Есть ли недостатки в использовании этого способа по сравнению со стандартным способом:
my_set = set(['foo', 'bar', 'baz'])
или это просто вопрос стиля?
python
python-2.7
set
fvrghl
источник
источник
Ответы:
Есть две очевидные проблемы с синтаксисом set literal:
my_set = {'foo', 'bar', 'baz'}
Он недоступен до Python 2.7.
Невозможно выразить пустой набор с помощью этого синтаксиса (использование
{}
создает пустой dict)Они могут быть важны для вас, а могут и не быть.
Раздел документации, описывающий этот синтаксис, находится здесь .
источник
Сравните также разницу между аргументом из одного слова
{}
иset()
с ним.>>> a = set('aardvark') >>> a {'d', 'v', 'a', 'r', 'k'} >>> b = {'aardvark'} >>> b {'aardvark'}
но оба
a
иb
являются наборами, конечно.источник
set([])
а не простоset()
.set()
всегда беру единственный аргумент. Одна итерация.Из документации Python 3 ( то же самое и для Python 2.7 ):
в python 2.7:
>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'} >>> my_set set(['bar', 'foo', 'baz'])
Имейте в виду, что
{}
это также используется дляmap
/dict
:>>> m = {'a':2,3:'d'} >>> m[3] 'd' >>> m={} >>> type(m) <type 'dict'>
Также можно использовать исчерпывающий синтаксис для инициализации наборов:
>>> 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', '{', '}'])
источник
Вам нужно сделать
empty_set = set()
для инициализации пустой набор.{}
это пустой словарный запас.источник