6

Пустой литерал множества?

1

[] обозначает пустой список

() обозначает пустой кортеж

{} обозначает пустой словарь

Существует ли аналогичная нотация для пустого множества? Или мне нужно использовать set()?

3 ответ(ов)

0

Чтобы расширить принятый ответ:

Начиная с версии 2.7 и 3.1, в Python появился литерал set в виде {}, который можно использовать следующим образом: {1,2,3}. Однако {} по-прежнему используется для обозначения пустого словаря.

В Python 2.7 (первая строка недействительна в Python <2.7):

>>> {1,2,3}.__class__
<type 'set'>
>>> {}.__class__
<type 'dict'>

В Python 3.x:

>>> {1,2,3}.__class__
<class 'set'>
>>> {}.__class__
<class 'dict'>

Дополнительную информацию можно найти здесь: https://docs.python.org/3/whatsnew/2.7.html#other-language-changes

0

Это зависит от того, хотите ли вы использовать "пустой" набор для сравнения или для присваивания.

Если вы хотите очистить существующий набор, то можете использовать метод .clear(), особенно если хотите избежать создания нового объекта. Если же ваша цель - провести сравнение, используйте set() или проверьте, равен ли длина 0.

Пример:

# создаем новый набор    
a = set([1, 2, 3, 'foo', 'bar'])
# или, используя литерал:
a = {1, 2, 3, 'foo', 'bar'}

# создаем пустой набор
a = set()
# или используем метод clear
a.clear()

# сравнение с новым пустым набором
if a == set():
    # делаем что-то

# проверка длины
if len(a) == 0:
    # делаем что-то
0

Добавляя к безумным идеям: в Python 3, который принимает юникодные идентификаторы, вы можете объявить переменную ϕ = frozenset(), где ϕ — это U+03D5, и использовать её вместо обычных имен переменных. Это действительно возможно, но стоит учитывать, что такой подход может значительно ухудшить читаемость кода и его поддержку. Поэтому перед использованием юникодных идентификаторов стоит хорошо взвесить все "за" и "против".

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь