Комментарии 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))...).
Тот случай., когда комментарии интересней поста;).
П.С. Пост тоже хорош!;)
Python — list/set/dict/generator comprehensions