Друзья, сегодня поговорим про создание пустых словарей (списков, кортежей).
Существует два разных способа создания словаря:
1) с помощью функции
2) с помощью литерала
У одного из этих способов есть небольшое преимущество.
Оказывается, создание пустого словаря с помощью литерала
Прежде всего это связано с тем, что при использовании литерала выполняется меньшее количество инструкций машинного кода. Python сразу понимает, что литерал
Аналогично дело обстоит с функцией
Однако заполнение уже созданного словаря с применением литерала займет примерно столько же времени, сколько и с применением функции
Стоит понимать, что разница во времени, затраченном на создание объекта с помощью функции и с помощью литерала, измеряется в наносекундах. А на создание и заполнение, к примеру, списка размером
Вывод: используйте для создания пустого словаря, списка и кортежа литералы
#dict #list #tuple #словарь #список #кортеж #полезныйматериал
Существует два разных способа создания словаря:
1) с помощью функции
dict()2) с помощью литерала
{}
У одного из этих способов есть небольшое преимущество.
Оказывается, создание пустого словаря с помощью литерала
{} работает примерно в 2 раза быстрее, чем с помощью функции dict().Прежде всего это связано с тем, что при использовании литерала выполняется меньшее количество инструкций машинного кода. Python сразу понимает, что литерал
{} применяется для построения словаря, а при использовании функции dict() требуется дополнительное время на поиск функции с именем dict и непосредственный ее вызов.Аналогично дело обстоит с функцией
list() и литералом [], с функцией tuple() и литералом ().Однако заполнение уже созданного словаря с применением литерала займет примерно столько же времени, сколько и с применением функции
dict().Стоит понимать, что разница во времени, затраченном на создание объекта с помощью функции и с помощью литерала, измеряется в наносекундах. А на создание и заполнение, к примеру, списка размером
10**6, уходит порядка 14 миллисекунд. Это значит, что разница во времени, затраченном на само создание списка через list() и через [], не будет ощутима при заполнении списка большого размера.Вывод: используйте для создания пустого словаря, списка и кортежа литералы
{}, [] и (). Это сделает ваш код немного быстрее, а самое главное — читабельнее.#dict #list #tuple #словарь #список #кортеж #полезныйматериал
👍62✍26🫡8🔥5🆒3❤2⚡1🤯1💯1 1 1
Друзья, сегодня поговорим о преимуществах кортежей перед списками.
Кортежи часто рассматривают как неизменяемый вариант списков. Неизменяемость кортежей дает им два важных преимущества перед изменяемыми списками:
1) Ясность: когда мы видим в коде кортеж, мы точно знаем, что его длина не изменится.
2) Производительность: кортежи потребляют меньше памяти и позволяют Python выполнить ряд оптимизаций.
Обсудим подробно, за счет чего кортежи обладают большей производительностью:
1) Благодаря фиксированной длине для кортежа выделяется ровно столько памяти, сколько необходимо. Напротив, при создании списка память выделяется с запасом, чтобы при добавлении новых элементов в список не тратить время на постоянное перераспределение памяти.
2) При копировании кортежа (с помощью
3) За кулисами кортежи и списки являются массивами, содержащими ссылки на элементы. Массив кортежа находится в самой структуре кортежа, а список хранит только указатель на свой массив, который располагается в другом месте памяти. Это нужно для того, чтобы Python мог добавить место для нового массива ссылок бОльшего размера, когда список перестанет помещаться в выделенной памяти.
Таким образом, кортежи — это хорошо оптимизированный фундаментальный тип данных, который широко используется в различных программах и даже самим интерпретатором Python.
#python #tuple #list #кортеж #список #полезныйматериал
Кортежи часто рассматривают как неизменяемый вариант списков. Неизменяемость кортежей дает им два важных преимущества перед изменяемыми списками:
1) Ясность: когда мы видим в коде кортеж, мы точно знаем, что его длина не изменится.
2) Производительность: кортежи потребляют меньше памяти и позволяют Python выполнить ряд оптимизаций.
Обсудим подробно, за счет чего кортежи обладают большей производительностью:
1) Благодаря фиксированной длине для кортежа выделяется ровно столько памяти, сколько необходимо. Напротив, при создании списка память выделяется с запасом, чтобы при добавлении новых элементов в список не тратить время на постоянное перераспределение памяти.
2) При копировании кортежа (с помощью
[:] или tuple()) возвращается ссылка на исходный кортеж. Кортежи — неизменяемые, а значит, нет необходимости возвращать копию кортежа. Напротив, при копировании списка (с помощью [:] или list()) возвращается ссылка на новый объект, потому что исходный список может измениться, а это не должно отражаться на копии.3) За кулисами кортежи и списки являются массивами, содержащими ссылки на элементы. Массив кортежа находится в самой структуре кортежа, а список хранит только указатель на свой массив, который располагается в другом месте памяти. Это нужно для того, чтобы Python мог добавить место для нового массива ссылок бОльшего размера, когда список перестанет помещаться в выделенной памяти.
Таким образом, кортежи — это хорошо оптимизированный фундаментальный тип данных, который широко используется в различных программах и даже самим интерпретатором Python.
#python #tuple #list #кортеж #список #полезныйматериал
👍68🔥16✍12❤🔥3👏2🥰1 1 1
Друзья, в одном из предыдущих постов мы выяснили, что кортежи — это неизменяемые объекты, которые хорошо оптимизированы изнутри.
Однако в некоторых случаях кортежи являются относительно неизменяемыми.
Если элементы кортежа являются изменяемыми объектами, то их можно модифицировать внутри кортежа. При этом сам кортеж остается неизменяемым и его id остается тем же.
Интересным случаем является расширение списка внутри кортежа с помощью оператора
Оператор
Таким образом, выполняется только часть работы оператора
Ошибки в данном случае можно избежать, используя списочный метод
Стоит также отметить, что кортежи могут быть хешируемыми и нехешируемыми в зависимости от своего содержимого:
1) кортеж является хешируемым, если все его элементы хешируемые,
2) кортеж является нехешируемым, если хотя бы один из его элементов нехешируемый.
Множества и словари допускают в качестве элементов и ключей только хешируемые объекты. Следовательно, нехешируемый кортеж не может быть элементом множества или ключом словаря.
Например, если кортеж содержит в качестве элемента список (нехешируемый объект), то при попытке добавить этот кортеж в множество мы получим ошибку:
#tuple #list #список #кортеж #хешируемость #полезныйматериал
Однако в некоторых случаях кортежи являются относительно неизменяемыми.
Если элементы кортежа являются изменяемыми объектами, то их можно модифицировать внутри кортежа. При этом сам кортеж остается неизменяемым и его id остается тем же.
Интересным случаем является расширение списка внутри кортежа с помощью оператора
+= при обращении к списку по индексу кортежа. Оператор
+= сначала выполняет расширение списка. Эта операция проходит успешно, так как список — изменяемый объект. Затем += пытается присвоить измененный список элементу кортежа по индексу. Эта операция завершается ошибкой TypeError, так как кортеж — неизменяемый объект. Таким образом, выполняется только часть работы оператора
+=. Мы получили исключение, но список внутри кортежа будет изменен. 🙃Ошибки в данном случае можно избежать, используя списочный метод
extend().Стоит также отметить, что кортежи могут быть хешируемыми и нехешируемыми в зависимости от своего содержимого:
1) кортеж является хешируемым, если все его элементы хешируемые,
2) кортеж является нехешируемым, если хотя бы один из его элементов нехешируемый.
Множества и словари допускают в качестве элементов и ключей только хешируемые объекты. Следовательно, нехешируемый кортеж не может быть элементом множества или ключом словаря.
Например, если кортеж содержит в качестве элемента список (нехешируемый объект), то при попытке добавить этот кортеж в множество мы получим ошибку:
TypeError: unhashable type: 'list'.#tuple #list #список #кортеж #хешируемость #полезныйматериал
👍65🔥19❤10🆒2🦄2🥰1🍓1👀1🗿1 1 1
Друзья, сегодняшнее слово недели — кортеж (нет, не президентский). 😃
🔎 Слово "tuple" происходит от английского суффикса, который встречается в словах типа double, triple, quadruple и указывает на кратность. В математике этот суффикс дал понятие n-tuple — упорядоченный набор из n элементов, после чего само "tuple" обособилось как имя для кортежа. Из математики термин перекочевал в информатику (включая Python) и означает фиксированный упорядоченный набор элементов.
✏️ Кортеж можно создать с помощью встроенной функции
Попытка изменить кортеж приводит к ошибке:
Особенности кортежей:
✔️ элементы упорядочены
✔️ доступны операции индексации, срезов, перебора в цикле
✔️ можно хранить элементы разных типов данных (в том числе изменяемых)
✖️ изменить элементы после создания нельзя
Когда лучше использовать кортежи:
🔵 если данные фиксированы: создаются один раз и больше не изменяются (например, координаты точки, дата рождения или параметры телефона)
🔵 если нужно использовать какие-то данные в качестве ключа словаря или элемента множества
О преимуществах кортежей перед списками мы говорили в этом посте.
Ставьте реакцию:
❤️ — если используете кортежи в своих программах
👀 — если не понимаете, зачем они вообще нужны в Python
#поколениеpython #словонедели #кортеж #tuple
tuple() на основе другого итерируемого объекта или через явное указание элементов через запятую (обычно в круглых скобках):cities = tuple({'Рим', 'Москва', 'Перт'})
date = 2012, 12, 12
point = (-4, 3)Попытка изменить кортеж приводит к ошибке:
letters = ('a', 'b', 'c')
letters[0] = 'd' # TypeError: 'tuple' object does not support item assignment Особенности кортежей:
Когда лучше использовать кортежи:
О преимуществах кортежей перед списками мы говорили в этом посте.
Ставьте реакцию:
❤️ — если используете кортежи в своих программах
👀 — если не понимаете, зачем они вообще нужны в Python
#поколениеpython #словонедели #кортеж #tuple
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤105👀22 15⚡7🔥5 3👍1🆒1 1