Pull to refresh

Comments 11

Я поставил плюс, но догадываюсь, почему минусуют: чтобы понять, что здесь написано, нужно знать, что здесь написано.

Здравствуйте. У меня сложные примеры?

Кратко и просто создавать коллекции.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Это называется словом "литерал", в данном случае - списочный литерал.

Знание терминологи не обязательно для простых смертных, но весьма желательно для python разработчика с многолетним опытом и держателя профильного телеграм-канала. Объясню почему:

Литерал, как способ создания питон-объекта, существует не для только лишь всех. Хрестоматийный пример: множество из нескольких элементов можно задать литералом, напр {1, 2, 3}, но пустое множество создаётся только вызовом конструктора set(). Причина проста и естественна - для пустого множества не удалось придумать органично выглядящий и однозначно распознаваемый литерал.

В древности литералы существовали лишь для самых базовых типов, например чисел - ну как ты число сконструируешь? Т.е. можно конечно конструктором, вызов int() порождает 0, но один только ноль - этого мало. В питон литералы сразу завезли для списков и словарей, а множества (которые кстати тоже появились не сразу) изначально создавались только через конструктор, set([1, 2, 3]), и лишь потом для них придумали литералы, как синтаксический сахар.

В завершение хочется упомянуть, что кроме генераторов списков, ...

Есть и другие хорошие новости. Например, хотя для коллекции типа deque (очередь) нет литерала, и создавать её экземпляр приходится древним способом, deque([1, 2, 3]), для создания очереди можно воспользоваться генераторным выражением в качестве аргумента конструктора, deque(i * 2 for i in range(3)), что выглядит почти так же мило, как списочный генератор.

Спасибо за обратную связь! В статье я не пытался раскрыть, что такое "литерал". Я хотел рассказать, как работают генераторы коллекций. Коллекция в программирование это объект, который содержит в себе другие объекты, и предоставляет открытый интерфейс для доступа к этим данных.

Причина проста и естественна - для пустого множества не удалось
придумать органично выглядящий и однозначно распознаваемый литерал.

...потому что пустые фигурные скобки заняты словарём. И это несколько удивляет: для списка - квадратные скобки, для кортежа - круглые, а фигурные достались и словарю, и множеству.

Квадратные скобки используются также при: list[0], str[::], dict["key"].

Круглые скобки используются ещё для генерации генераторов (x for x on y), выделения условий и мат. операций (2 + 2) * 2, средством переноса кода без применения "/", вызов любого callable объекта происходит через ().

Фигурные скобки используются в f-string f"{argument}".

Итог - на всех не хватит разных видов скобок :)

Вообще-то множество - это словарь, где есть только ключи без значений. Поэтому у него и у словаря - фигурные скобки. Обе коллекции в Python - хэшируемые объекты.

Множество и словарь это разные типы данных, с разными интерфейсами взаимодействия. Множество не имеет порядка и доступа по ключу.

Также операции и задачи в которых используются эти типы данных, отличаются.

Спасибо за ценную информацию. Автору тоже спасибо и лайк)). Если нуль-функция порождается как int(), то нужен литерал только для единицы, чтобы записать другую базовую примитивно-рекурсивную функцию следования s(x)= x+1. Тогда любое натуральное число записывается как s...s(int(0))...).

Тот случай., когда комментарии интересней поста;).

П.С. Пост тоже хорош!;)

Sign up to leave a comment.

Articles